Java 如何检查作为类对象的参数的instanceof?
我正在尝试构建一个通用类加载器。我需要根据方法参数检查我加载的类,以确定它们是否属于同一个类 代码主要解释了我要做的事情Java 如何检查作为类对象的参数的instanceof?,java,class,classloader,instanceof,Java,Class,Classloader,Instanceof,我正在尝试构建一个通用类加载器。我需要根据方法参数检查我加载的类,以确定它们是否属于同一个类 代码主要解释了我要做的事情 private static LinkedList<Object> loadObjectsInDirectory(Class class0, File dir) throws ClassNotFoundException { LinkedList<Feature> objects = new LinkedList<Obj
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;
}
private static LinkedList loadObjectsInDirectory(类class0,文件目录)引发ClassNotFoundException{
LinkedList对象=新建LinkedList();
ClassLoader cl=新的GenericClassLoader();
for(字符串s:dir.list()){
类别1=cl.loadClass(s);
试一试{
对象x=class1.newInstance();
if(x实例of(!!!class0!!!){
对象。添加(x);
}
}catch(实例化异常){
}捕获(非法访问例外){
}
}
归还物品;
}
这是如何实现的?看起来您需要这种方法
JavaDoc
确定此类对象表示的类或接口是否与指定的类参数表示的类或接口相同,或者是其超类或超接口。如果是,则返回true;否则返回false。如果该类对象表示基元类型,则如果指定的类参数正是该类对象,则该方法返回true;否则返回false
具体地说,此方法测试指定类参数表示的类型是否可以通过标识转换或加宽引用转换转换为此类对象表示的类型。有关详细信息,请参阅Java语言规范第5.1.1节和第5.1.4节
“卡拉斯”??!?为什么人们必须继续使用创造性的“class”替代拼写,例如“klass”、“clazz”,而不是简单且不太刺耳的“class0”或“class1”或“cl”之类的拼写?当然,这样就不再需要实例化类来加载它了。
if (kelass.isAssignableFrom(klass)) {
objects.add(x);
}