Rufen Sie Super-Klassenmethoden mit Reflection auf

8

Ich habe 2 Klassen, sagen A & amp; B:

%Vor%

Ich verwende jetzt reflection, um die Methoden der Klasse A aufzurufen. Ich möchte auch die in Klasse B vorhandene printHelloWorld-Methode aufrufen.

Ich habe es mit

versucht %Vor%

Auch als

versucht %Vor%

Aber keiner von ihnen funktioniert; Sie werfen eine InstantiationException .

Was mache ich hier falsch?

    
Vivek 22.01.2013, 09:44
quelle

2 Antworten

15

Versuchen Sie Folgendes:

%Vor%

Der Unterschied besteht in der Verwendung von getDeclaredMethod() , das Methoden von alle Sichtbarkeiten erhält ( public , protected , Paket / Standard und private ) anstelle von < a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getMethod%28java.lang.String,%20java.lang.Class...%29" > getMethod() , die nur Methoden mit public Sichtbarkeit erhält.

    
Bohemian 22.01.2013, 09:51
quelle
2

Welche Sichtbarkeit haben die Methoden, die Sie aufrufen möchten (öffentlich, privat usw.)? Wenn Sie Methoden sehen möchten, die Sie nicht direkt aufrufen können, sollten Sie getDeclaredMethod () verwenden.

Was mögen die Konstruktoren Ihrer Klassen auch? InstantiationException gibt an, dass Sie Probleme beim Abrufen einer Instanz der Klasse A (oder B) haben.

Ich habe den folgenden Code und es funktioniert:

A.java

%Vor%

B.java

%Vor%     
NickJ 22.01.2013 09:57
quelle

Tags und Links