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

vor*_*ger 3 java reflection

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

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

Cha*_*lie 7

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

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.
      }
}
Run Code Online (Sandbox Code Playgroud)