gpt4 book ai didi

带有泛型的 Java 反射方法调用

转载 作者:行者123 更新时间:2023-11-29 06:25:40 25 4
gpt4 key购买 nike

给定这个方法:

public final void foo (List<MyClass> bar){ .. }

我希望能够反射性地调用这个方法。为了让 getMethod 起作用,我必须将其更改为:

public final void foo (List bar){ .. }

由于显而易见的原因,这似乎不正确,但 getMethod 的输入组合似乎没有其他效果。我在谷歌上到处搜索都无济于事。有什么建议吗?

干杯,谢谢!

最佳答案

import java.util.*;
import java.lang.reflect.*;
public class Test {
public final void foo (List<String> bar){
for(String x : bar)
System.out.println(x);
}
public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
Test x = new Test();
List<String> y = new ArrayList<String>(); y.add("asd"); y.add("bsd");
x.getClass().getMethod("foo",List.class).invoke(x,y);
}
}

你可以只使用getMethod("foo",List.class)并使用 List.class作为一般信息 List<String>仅在编译时使用。在运行时,方法签名看起来像

public final void foo (List bar)

与编译时类型删除一样,删除了通用信息。

关于带有泛型的 Java 反射方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1753084/

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