2013-03-13 18 views
6

Mam obiekt typu IType klasy. Chcę wiedzieć, czy klasa jest klasą abstrakcyjną, czy nie. Czy istnieje jakakolwiek metoda dostępna w IType lub ICompilationUnit w celu określenia tego samego (innego niż odbicie).Jak ustalić, czy IType jest klasą abstrakcyjną?

+0

Ty oznaczone Eclipse plugin, czy jest jakiś inny problem niż ci faceci rozumieć? – OQJF

Odpowiedz

0
Class clazz = IType.class; 
Modifier.isAbstract(clazz.getModifiers()) 
+0

Nie zapytał, czy 'IType' sam jest klasą abstrakcyjną, zapytał, jak powiedzieć, czy klasa w przestrzeni roboczej Eclipse (reprezentowanej przez" IType ") jest abstrakcyjna. –

0

Dodaj następujące import:

import java.lang.reflect.Modifier; 

Następnie przetestować go z następujących czynności:

if(Modifier.isAbstract(IType.class.getModifiers())) 
    //do something... 
+0

Nie zapytał, czy 'IType' sam jest klasą abstrakcyjną, zapytał, jak określić, czy klasa w przestrzeni roboczej Eclipse (reprezentowanej przez" IType ") jest abstrakcyjna. –

1

można dostać w pełni kwalifikowana nazwa iType jest (być może za pomocą IType.getTypeQualifiedName()) , następnie użyj Class.forName() na tej nazwie, aby uzyskać obiekt Class, a następnie użyj Modifier.isAbstract(), jak zalecili inni.

obiekt klasy Java jest częścią pakietu refleksji, więc w ten sposób jeszcze trochę wykorzystuje odbicia ...

8
IType type = ...; 
boolean isAbstract = Flags.isAbstract(type.getFlags()); 
Powiązane problemy