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ą?
Odpowiedz
Class clazz = IType.class;
Modifier.isAbstract(clazz.getModifiers())
Nie zapytał, czy 'IType' sam jest klasą abstrakcyjną, zapytał, jak powiedzieć, czy klasa w przestrzeni roboczej Eclipse (reprezentowanej przez" IType ") jest abstrakcyjna. –
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...
Nie zapytał, czy 'IType' sam jest klasą abstrakcyjną, zapytał, jak określić, czy klasa w przestrzeni roboczej Eclipse (reprezentowanej przez" IType ") jest abstrakcyjna. –
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 ...
IType type = ...;
boolean isAbstract = Flags.isAbstract(type.getFlags());
Ty oznaczone Eclipse plugin, czy jest jakiś inny problem niż ci faceci rozumieć? – OQJF