我怎样才能做到这一点:
class Foo {
public static Foo get() throws Exception {
ClassLoader cl = new URLClassLoader(new URL[]{"foo.jar"}, null); // Foo.class is in foo.jar
return (Foo)cl.loadClass("Foo").newInstance(); // fails on class cast
}
}
我需要的是 JVM 将 cl 中的 Foo 实例视为来自执行代码的类加载器的 Foo 实例。
我已经看过这些方法,但没有一个对我有好处(上面的例子是一个玩具示例):
- 通过类加载器加载类(或单独的接口),该类加载器是调用代码和创建的类加载器的父级
- 序列化和反序列化对象。
不可能。类标识由完全限定名称和类加载器组成。
将一个对象转换为由不同类加载器加载的同名类与尝试转换一个对象没有什么不同String
to Integer
,因为尽管名称相同,但这些类确实可能完全不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)