Methodennamen aus String

lernen.2007

Erfahrenes Mitglied
Hallo Leute,

ein String enhält eine Methodenname:

String vornameHolen = "getVorname()";

Ich habe eine Klasse Student und hat die Methode getVorname

class Student {

public String getVorname() {

return xy;
}

}


Ich will aber die Methode getVorname nicht so aufrufen:

Student student = new Student();
student.getVorname();

Sondern:

Student student = new Student();
student.vornameHolen;

d.h. die Methodenname setzt sich aus String.

Wie kann ich sowas realisieren?

Danke
 
Hallo,

so wie du es möchtest wird es nicht ganz funktionieren. Die einzige Möglichkeit die ich wüsste, wäre wie oben schon erwähnt mit Reflection. Du könntest dir eine Methode schreiben, die einen String als Übergabeparameter hat. In dieser Methode lädst du dann die Klasse via Reflection und führst anschließend die Methode aus.


MFG

zEriX
 
Bei mir funktioniert aber nur wenn der aufrufende Methode nur einen Parameter hat. Wie soll es aber bei mehren Parametern funktionieren:

Code:
Class beanClass = test.getClass();
Class[] propertyType = new Class[] {String.class};
 Method getMethod = beanClass.getMethod(methodName, propertyType);
getMethod.invoke(test,new Object[] {string});

Gruß
 
In deinem Array propertyType gibst du ja an, von welchem Typ deine Übergabeparameter sind. Da es ein Array ist kannst du ja mehrere Typen angeben.
Code:
Class[] propertyType = new Class[] {String.class, Integer.class};
Das entspricht:
Code:
methodenName(String text, Integer zahl)

Bei method.invoke() gibst du ja ein Object-Array an. Da stehen dann deine Übergabeparameter drin.

Code:
method.invoke(object, new Object[]{"Das ist ein String", new Integer(5)});

Hoffe das hilft dir.

MFG

zEriX
 
Zurück