专家问题,快来解答!!
在使用instanceof这个关键字时,我本意是判断一个未知对象是否为一个类的实例,而这个类我想从配置文件中读取(或者说时动态的,也就是只知道字符串),然后再通过Class.forName(string)或者getClass().getClassLoader().loadClass(String)两种方式中的任意一种来装载,它们将返回一个Class,可是这个我定义的class却不能在instanceof中使用,很奇怪.
想问大家有什么更好的方式来动态判断一个对象是否为一个类的实例.
源代码:
....
//e为一个对象
String className = map.get("exceptionClass").toString();
ClassLoader loader = getClass().getClassLoader();
Class tmpClass = loader.loadClass(className);
//Class tmpClass = Class.forName(Class);
if (e instanceof tmpClass) {//这里就报错了
......
}
请注意:因为有可能传入的对象e是某个类的一个子类,传进来时已经被强制转换成父类,所以用getClass()方法不知道返回的是哪个类,所以用e.getClass()==tmpClass.class可能性比较大,当然我也没有试过,欢迎大家看看
高分请教了!