O
OhNo
Gast
Hi Leute, ich habe folgendes Probelm:
Ich habe eine superklasse und zwei abgeleite Klassen wie oben zu sehen ist. Jetzt definiere ich in der Classe D eine Funktion. Diese Funktion bekommt als übergabeparameter einen Methodennamen und ENTWEDER ein objekt von Class B ODER Class C. Da ich dies aber erst zur Laufzeit weiss nehme ich logischer Weise die Superklasse A.
DAS PROBLEM: Ich will nun über Reflections eine Methode aufrufen die als Übergabeparameter wiederum ein Objekt von Class B oder Class C hat. Allerdings muss ich bei der invoke Methode als zweiten Parametertyp ein ARRAY VOM TYP Class B oder Class C übergeben, da ich erst zur Laufzeit weiss, ob es jetzt Class B oder C ist kann ich aber noch keins instanziieren und ein Array vom Superklassentyp funktioniert nicht.... was kann ich tun?
[/code]
Code:
Class [b]A[/b]{}
Class [b]B[/b] extends [b]A[/b]
{
verschiedene Methoden
}
Class [b]C[/b] extends [b]A[/b]
{
verschiedene Methoden
}
Ich habe eine superklasse und zwei abgeleite Klassen wie oben zu sehen ist. Jetzt definiere ich in der Classe D eine Funktion. Diese Funktion bekommt als übergabeparameter einen Methodennamen und ENTWEDER ein objekt von Class B ODER Class C. Da ich dies aber erst zur Laufzeit weiss nehme ich logischer Weise die Superklasse A.
DAS PROBLEM: Ich will nun über Reflections eine Methode aufrufen die als Übergabeparameter wiederum ein Objekt von Class B oder Class C hat. Allerdings muss ich bei der invoke Methode als zweiten Parametertyp ein ARRAY VOM TYP Class B oder Class C übergeben, da ich erst zur Laufzeit weiss, ob es jetzt Class B oder C ist kann ich aber noch keins instanziieren und ein Array vom Superklassentyp funktioniert nicht.... was kann ich tun?
Code:
Class [b]D[/b]
{
public void foo(A klassenName, String methodenName)
{
klassenName.getClass().getMethod(methodenName, new Class[] { klassenName.getClass() })
.invoke(klassenName.getClass(), ??? );
}
}