isAssignableFrom Class.java的函数

时间:2009-10-28 07:48:09

标签: java classcastexception

我正在尝试关注

上下文ctx =(上下文)jndiCntx.lookup(fSTANDARD_ENVIRONMENT);

Object obj = ctx.lookup(fSTANDARD_JNDINAME);

以下代码返回false

MyClass.class.isAssignableFrom(obj.getClass())

虽然

MyClass.class.getName()。equalsIgnoreCase(obj.getClass()。getName())返回true。

我无法将obj强制转换为MyClass,因为它会抛出ClassCastException。

可能是什么问题?

2 个答案:

答案 0 :(得分:2)

我的猜测是该类已被两个不同的类加载器加载。

在当前代码中查看obj.getClass().getClassLoader()与呼叫getClassLoader()

这个类本身是否可以从两个不同的jar文件中获得?这通常很容易理清。如果你有两个使用相同jar文件的独立类加载器,那就更难了。

你在运行什么容器?我建议您查看类加载器的容器特定文档...例如,这里是Tomcat 5.5 ClassLoader how-to

答案 1 :(得分:0)

挂起,你为什么要调用“equalsIgnoreCase”来检查类名而不是简单的“等于”?是否有可能(几乎)匹配名称之间存在冲突?