专家问题,快来解答!!

hh_fwhy 2002-12-23 04:48:44
在使用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可能性比较大,当然我也没有试过,欢迎大家看看
高分请教了!
...全文
40 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fastmask 2002-12-23
  • 打赏
  • 举报
回复
getClass()返回的是他的实例化的类,也就是你new的那个子类。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧