gpt4 book ai didi

Java类反射: init external class with wild card parameters

转载 作者:行者123 更新时间:2023-11-30 06:06:20 27 4
gpt4 key购买 nike

我已经搜索了这个问题的解决方案 2 天,现在必须在这里提问:-( 我的问题:

我创建了新的自定义 Java 类:

package my.app.test;

class Test extends Object {
Test(){

}

public void print(){
System.out.println("success");
}
}

在另一个包中我有:

package my.app.test2;

public class Test2 {
Test2(Class<? extends Object> Test){

}

public void execute(Class<? extends Object> Test){

}
}

现在我想用 Test.class 作为参数来膨胀 Test2.class:

package my.app.test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Index {
Index(){}

static public void inflate(){
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if(loader != null)
try {
Class<?> Test2 = Class.forName("my.app.test2.Test2", false, loader);
if(Test2 != null){
Class<?>[] types = new Class[1];
types[0] = Test.class;
Method m = Test2.getDeclaredMethod("execute", types);
m.setAccessible(true);
try {
m.invoke(Test.class, new Test());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
} catch (NoSuchMethodException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

但是我收到错误:

java.lang.NoSuchMethodException: my.app.test2.Test2.execute(my.app.test.Test)

是否可以这样做?

最佳答案

您的Test2类没有像execute(Test)这样的方法,但有execute(Class)。您应该执行 Test2.getDeclaredMethod("execute", Class.class)

关于Java类反射: init external class with wild card parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51235628/

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