isAssignableFrom gibt für die Unterklasse nicht den Wert true zurück

7

Ich möchte also überprüfen, ob eine Klasse einer Superklasse zugeordnet werden kann, die viele Unterklassen enthält, etwa so

%Vor%

Warum kommt das falsch? Offensichtlich kann es der Klasse B als

zugewiesen werden %Vor%

gibt keinen Fehler zurück, also warum wird das falsch zurückgegeben? Ist es nicht die Funktion, die es selbst beschreibt? Gibt es eine Funktion, die das erreicht, was ich will (dh ich bin diese Klasse oder eine Unterklasse davon)?

    
Kevin DiTraglia 20.09.2012, 23:18
quelle

3 Antworten

14

Wenn Sie testen möchten, ob der tatsächliche Typ a B oder ein Untertyp ist, haben Sie es rückwärts: es ist

%Vor%     
Louis Wasserman 20.09.2012, 23:33
quelle
5

Dies liegt daran, dass getClass() die tatsächliche Klasse und nicht die deklarierte Klasse einer Variablen zurückgibt - a.getClass() gibt die Klasse C (C.class) zurück, die die tatsächliche Klasse des Objekts ist, das zugewiesen wurde an die Variable A a und Sie können einem B

tatsächlich keine C zuweisen

Ссылка

    
Stephen P 20.09.2012 23:21
quelle
0

Weil Klasse B Klasse C nicht erweitert / implementiert, was AssignableFrom () Tests ist. Eine Instanz der Klasse B könnte gemäß Ihrem Beispiel eine Instanz der Klasse C sein. Um das zu testen, verwenden Sie 'instanceof'.

    
EJP 20.09.2012 23:23
quelle

Tags und Links