[英]How to check if the “?” of a Class<?> object instanceof SomeInterface
[英]How to check instanceof on an argument that is a Class object?
我正在嘗試構建一個通用的類加載器。 我需要檢查我對方法參數加載的類,以確定它們是否屬於同一個類。
代碼主要解釋了我正在嘗試做什么。
private static LinkedList<Object> loadObjectsInDirectory(Class class0, File dir) throws ClassNotFoundException {
LinkedList<Feature> objects = new LinkedList<Object>();
ClassLoader cl = new GenericClassLoader();
for(String s : dir.list()) {
Class class1 = cl.loadClass(s);
try {
Object x = class1.newInstance();
if (x instanceof (!!! class0 !!!) ) {
objects.add(x);
}
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
}
return objects;
}
這是如何實現的?
看起來你需要isAssignableFrom方法
if (kelass.isAssignableFrom(klass)) {
objects.add(x);
}
的JavaDoc
確定此Class對象表示的類或接口是否與指定的Class參數表示的類或接口相同,或者是它們的超類或超接口。 如果是這樣,它返回true; 否則返回false。 如果此Class對象表示基本類型,則如果指定的Class參數恰好是此Class對象,則此方法返回true;否則返回true。 否則返回false。
具體來說,此方法測試是否可以通過標識轉換或擴展引用轉換將指定的Class參數表示的類型轉換為此Class對象表示的類型。 有關詳細信息,請參閱Java語言規范,第5.1.1和5.1.4節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.