gpt4 book ai didi

java - 创建加载类的实例

转载 作者:行者123 更新时间:2023-12-01 22:26:05 26 4
gpt4 key购买 nike

我对有问题的类加载器很陌生,并且有一个问题是否可能:我在类文件中有一个类(已编译,没有 src 代码)- Hidden.class。我有一个自定义类加载器,它能够像这样加载类:

        CustomClassLoader loader = new CustomClassLoader();

// load class
try {
loader.loadClass("Hidden");

// instantiate the class here and use it

} catch (ClassNotFoundException e) {
e.printStackTrace();
}

我想创建这个隐藏类的实例并从中调用一些公共(public)方法。可能吗?

最佳答案

您可以创建实例并调用方法,如下所示:

您已经在使用自己的类加载器,因此方法 loadClass("Hidden") 将返回引用您的隐藏类的 Class 类对象。

  try {
Class<?> c = loader.loadClass("Hidden"); // create instance of Class class referring Hidden class using your class loader object
Object t = c.newInstance();// create instance of your class

Method[] allMethods = c.getDeclaredMethods();
for (Method m : allMethods) {// get methods
String mname = m.getName();// get method name

try {
m.setAccessible(true);
m.invoke();//change as per method return type and parameters
} catch (InvocationTargetException x) {
// code here
}
}

// production code should handle these exceptions more gracefully
} catch (ClassNotFoundException x) {
x.printStackTrace();
} catch (InstantiationException x) {
x.printStackTrace();
} catch (IllegalAccessException x) {
x.printStackTrace();
}

此处Class.forName("Hidden");将给出引用您的类Hidden的Class类对象。使用此引用,您可以获得所有字段、方法、构造函数,并且可以根据需要使用它们。

关于java - 创建加载类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28764893/

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