我有一个简单的问题。我希望在String.TYPE
中将parameterType
设为getDeclaredMethod()
,但我找不到它。例如,对于Long数据类型有Long.TYPE
但是没有类似于String的任何内容类型。
有人可以帮我这个吗?
感谢
Object newClass;
newClass = Class.forName(cls.getName()).getConstructor().newInstance();
for (Method m : cls.getClass().getMethods())
if (m.getName().startsWith("get") && m.getParameterTypes().length == 0) {
try {
//final Object r = m.invoke(cls);
String MethodName=m.getName().replace("get","");
if (m.getReturnType().equals(Long.TYPE)){
// Class<?> c = Class.forName("class name");
}else
{
String value =this.getString(j,MethodName);
Method method = cls.getDeclaredMethod (MethodName, String);//Here I need Parameter Type for string imput parameter
method.invoke (newClass, value);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
// do your thing with r
}
答案 0 :(得分:1)
Long.TYPE
适用于基本类型long
。
对于String这样的引用类型没有这样的东西。
你想要String.class
。 (Long.class
将用于盒装类型Long
)。
答案 1 :(得分:1)
如何使用String.class
??
答案 2 :(得分:1)
检查一下。它工作正常。
Test obj = new Test();
for (Method m : obj.getClass().getDeclaredMethods()){
if (m.getName().startsWith("get") && m.getParameterTypes().length == 1) {
System.out.println("==="+m.getName());
if (m.getReturnType().equals(String.class)) {
String value = "ABCD";
Method method = Test.class.getDeclaredMethod (m.getName(), String.class);
method.invoke (obj, value);
}
}
}