【发布时间】:2018-07-25 08:02:50
【问题描述】:
我有许多具有不同类型参数的构造函数的类。 我从文本中得到了我需要使用的类以及它的构造函数:
"TheClassIWant parameter1 1234 parameter2 5678"
或:
"AnotherClass parameter1 3456"
我把上面的字符串分解成一个类名("TheClassIWant")的字符串和一个参数数组(p[])。现在我可以使用:
Class<?> cl = Class.forName("TheClassIWant")
和构造函数使用:
Constructor<?>[] cons = cl.getDeclaredConstructors();
我可以看到构造函数的参数使用:
Class<?>[] types = cons[1].getParameterTypes();
当我有许多每次都可能不同的构造函数参数时,如何创建类的 newInstance? 例如我可以这样做:
TheClassIWant cl = cons[1].newInstance(p[1],p[2],p[3],p[4]);
但字符串“AnotherClass parameter1 3456”会导致Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
【问题讨论】:
-
您的代码和this 的组合应该有助于字符串或原始类型的参数。
标签: java reflection