Vererbung herausfinden welche Klasse was erbt

pitman

Mitglied
Hey bin grad fleißig am Minecraft (MC) modden (falls euch interessiert: [1.7.3] Team Fortress 2 Teleporter + Sentry [pitman's mods] - Minecraft Forum)

und wollte herausfinden ob eine Klasse von einer bestimmten erbt, also bei MC ist es zB so aufgebaut:
Entity -> EntityLiving -> EntityAnimal -> EntityPig

Ich weis wie man das mit objekten macht if(entity instanceof EntityLiving)
Aber wie mach ich das direkt mit Klassen ohne eine Instanz angelegt zu haben (Class c)? Also testen ob die Klasse Entity Pig auch von Entity Living erbt, auch wenn noch Klassen dazwischenliegen.

Ist zwar bestimmt ne easy frage und nach meiner Erfahrung her vll schon etwas peinlich , aber ich kann das nicht gescheid googlen, kommen nur allgemeines Zeug zu Klassen und vererbung.
 
So?

Java:
Class<?> superClass = Component.class;
Class<?> testClass = String.class;

boolean isSuperclass = false;
Class<?> parent = testClass;
do
{
	parent = parent.getSuperclass();
	isSuperclass = parent == superClass;
}
while(!isSuperclass && parent != null);
System.out.println(isSuperclass);

Aber wenn da wirklich so viele instanceof's notwendig sind komme ich ins Grübeln, ob das wirklich OOP ausnutzt.
 
Aber wie mach ich das direkt mit Klassen ohne eine Instanz angelegt zu haben (Class c)?
Das macht die Methode "isAssignableFrom" der Class-Klasse.
[Java]
// gibt true
Entity.class.isAssignableFrom(EntityPig.class);
// gibt false
EntityPig.class.isAssignableFrom(Entity.class);
[/code]
Infos gibt's hier: Class (Java Platform SE 6))
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben