【发布时间】:2011-08-16 06:50:36
【问题描述】:
我有两个加载同一个类的 ClassLoader。所以,显然这些不能相互转换。但我需要访问在另一个 ClassLoader 中创建的对象。
我可以访问这两个 ClassLoader。如何在其他类中使用该对象?我不需要强制转换对象以匹配当前的 ClassLoader。
但问题是返回对象的类型是Object。因此,我必须放弃该对象才能访问某些方法。我怎样才能做到这一点?像下面这样的正常转换会导致 ClassCastException,我已经知道了。
Mojo mojo = (Mojo) descriptor.getMojo();
descriptor#getMojo() 返回一个 Mojo 类型的对象,但该方法返回 Object。怎么能做到这一点?
如果您需要更多信息,请告诉我。
我已经阅读了所有关于类加载的理论,但没有一个为此指定合适的解决方案。
【问题讨论】:
-
在您的实例中,如果您这样做:
Object o = descriptor.getMojo(); System.out.println(o.getClass);使用两个不同的类加载器会发生什么? -
这里最重要的问题是:您实际上想在这里实现什么?这是学术练习还是有支持这种情况的真实用例?
-
@Bringer128 它返回相同的类名 package.Mojo。我在想是否可以通过 getClass() 和 #cast(Object o) 方法执行上述转换?
-
@Sanjay T. Sharma 绝对不是。我正在修复现有代码。
-
@ravana 你见过this question吗?
标签: java classloader classcastexception