gpt4 book ai didi

java - 如何访问由其他类加载器异常加载的对象实例以使用反射?

转载 作者:行者123 更新时间:2023-11-30 09:54:01 25 4
gpt4 key购买 nike

我很困惑,除了使用反射之外,如何在不抛出 ClassCastExcepion 的情况下访问另一个类加载器加载的对象实例?似乎使用 JndiObjectFactoryBean 是一个更好的主意,但我不明白。有没有人可以让我清楚?非常感谢。

最佳答案

唯一的方法(除了反射)是始终使用接口(interface)类型与类进行交互;例如

public interface I {
public void foo();
}

public class C implements I {
public void foo(){ ... }
}

...
Classloader l1 = ...
I c1 = (I) l1.loadClass("some.pkg.C").newInstance();
c1.foo();

Classloader l2 = ...
I c2 = (I) l2.loadClass("some.pkg.C").newInstance();
c2.foo();

接口(interface)I 必须由l1l2 的公共(public)祖先类加载器加载。并假设这些类加载器(l1l2)实际加载了类,您不能转换 c1c2C

关于java - 如何访问由其他类加载器异常加载的对象实例以使用反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com