Class.java 的 isAssignableFrom 函数

发布于 2024-08-08 17:16:58 字数 382 浏览 7 评论 0原文

我正在尝试遵循

Context ctx = (Context) jndiCntx.lookup(fSTANDARD_ENVIRONMENT);

对象 obj = ctx.lookup(fSTANDARD_JNDINAME);

但以下代码返回 false

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

尽管

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

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

可能是什么问题?

I am trying following

Context ctx = (Context) jndiCntx.lookup(fSTANDARD_ENVIRONMENT);

Object obj = ctx.lookup(fSTANDARD_JNDINAME);

And following code is returning me false

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

although

MyClass.class.getName().equalsIgnoreCase(obj.getClass().getName()) returns true.

I am not able to cast obj to MyClass as it throws ClassCastException.

What could be the issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如歌彻婉言 2024-08-15 17:16:58

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

查看 obj.getClass().getClassLoader() 与在当前代码中调用 getClassLoader() 的情况。

该类本身可以从两个不同的 jar 文件中获取吗?这通常很容易解决。如果您有两个单独的类加载器,它们都使用相同的 jar 文件,那就更难了。

你在什么容器中运行?我建议您查看类加载器的特定于容器的文档...例如,这里是 Tomcat 5.5 类加载器操作方法

My guess is that the class has been loaded by two different classloaders.

Look at obj.getClass().getClassLoader() vs calling getClassLoader() in your current code.

Is the class itself available from two different jar files? That's normally an easy one to sort out. It's harder if you've got two separate classloaders which both use the same jar file.

What container are you running in? I suggest you look at the container-specific documentation for classloaders... for example, here's the Tomcat 5.5 ClassLoader how-to.

岁月苍老的讽刺 2024-08-15 17:16:58

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

hang on, why are you calling "equalsIgnoreCase" to check the classnames rather than just plain "equals"? Is it possible you've got a conflict between (nearly) matching names?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文