gpt4 book ai didi

Java Reflection 参数类型匹配,如何处理接口(interface)而不是类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:34:00 26 4
gpt4 key购买 nike

给定一个带有构造函数的类 Something public Something(List<String> l) , 我想用 klass.getConstructor(parameterTypes)其中 parameterTypes[0]是类java.util.ArrayList (因为我需要“匹配”给定的特定实例)而不是接口(interface) java.util.List。

这不起作用(NoSuchMethodException),因为 Java 反射似乎需要精确的类型类匹配。解决这个问题的最佳方法是什么?

最佳答案

可能有点矫枉过正,而且不可否认会选择太多的构造函数:

Constructor[] constructors = klass.getConstructors();
for(Constructor constructor:constructors) {
Class<?>[] params = constructor.getParameterTypes();
if(params.length == 1 && params[0].isAssignableFrom(ArrayList.class) {
//Yep could be the one you want.
}
}

关于Java Reflection 参数类型匹配,如何处理接口(interface)而不是类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5527184/

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