为了账号安全,请及时绑定邮箱和手机立即绑定

Java类反射:使用通配符参数初始化外部类

Java类反射:使用通配符参数初始化外部类

哈士奇WWW 2021-05-07 14:13:06
我已经为期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)如果可以的话?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您的Test2课程没有喜欢的方法,execute(Test)但是有execute(Class)。你应该做的Test2.getDeclaredMethod("execute", Class.class)


查看完整回答
反对 回复 2021-05-19
?
长风秋雁

TA贡献1757条经验 获得超7个赞

如果您必须使用泛型类型,则在运行时会删除泛型Object类型。有关详细信息,请参见Java Type Erasure;有关主题的详细说明,请参见Baeldung


查看完整回答
反对 回复 2021-05-19
  • 3 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信