加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 08:39:19 所属栏目:Java 来源:网络整理
导读:给定一个带有构造函数的东西Something(List String l),我想使用klass.getConstructor(parameterTypes),其中parameterTypes [0]是类 java.util.ArrayList(因为我需要“匹配”一个给定特定实例)而不是接口java.util.List. 这不起作用(NoSuchMethodException),
给定一个带有构造函数的东西Something(List< String> l),我想使用klass.getConstructor(parameterTypes),其中parameterTypes [0]是类 java.util.ArrayList(因为我需要“匹配”一个给定特定实例)而不是接口java.util.List.

这不起作用(NoSuchMethodException),因为Java Reflection似乎需要一个EXACT类型类匹配.围绕这个最好的方法是什么?

解决方法

可能有点矫枉过正,并且无可否认可能会捡到太多的构造函数:

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.
      }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读