gpt4 book ai didi

java - 通用列表和反射

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

我想通过反射调用以下方法,但我无法指定正确的签名:

 public void executeRule(List<Node> params, SomethingStrangeFound callMeBack) throws IOException
{
...
}

我试过这样的:

 Class partypes[] = new Class[2];
partypes[0] = Class.forName("java.util.List");
partypes[1] = Class.forName("vp.SomethingStrangeFound");

Method meth = cls.getMethod("executeRule", partypes);

它不起作用,因为当它必须是“List ”时我使用“java.util.List”,但我不知道如何指定它。

如果我只使用“java.util.List”,调用 cls.getMethod("executeRule", partypes) 时会出现以下错误:

 NoSuchMethodException: vp.RuleWebXmlContextParamFacesPortletRenderStyles.executeRule(java.util.List, vp.SomethingStrangeFound)

有什么帮助吗?

附言在调试时,我看到“List ”被解析为: (Ljava/util/List ;Lit/vp/SomethingStrangeFound;)V

但这对我没有帮助。

最佳答案

如果两个参数类在编译时都可用,您可以像这样初始化参数数组:

Class partypes[] = new Class[] { List.class, SomethingStrangeFound.class };
Method meth = cls.getMethod("executeRule", partypes);

这将保证您没有输入错误的合格类名。

如果这仍然不起作用,请使用 Class#getMethods() 方法检查您的类中可用的方法:

for (Method method : cls.getMethods()) {
System.out.println(method);
}

关于java - 通用列表和反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548328/

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