爲什麼variable2
的值爲空,如果我使用Reflection API實例化類?如何使用反射api訪問bean類的getter方法?
其中,Variable1
的值按照集合正確返回,這裏我正常實例化對象。 如何使用ReflectionAPI
獲得variable2
的值?
package com.OP.app;
public class Bean {
private String variable1;
private String variable2;
public String getVariable1() {
return variable1;
}
public void setVariable1(String variable1) {
this.variable1 = variable1;
}
public String getVariable2() {
return variable2;
}
public void setVariable2(String variable2) {
this.variable2 = variable2;
}
}
package com.OP.app;
import java.lang.reflect.Method;
public class ObjectCall {
public static void main(String []args){
Bean beanobject = new Bean();
beanobject.setVariable1("Ram");
beanobject.setVariable2("Rakesh");
System.out.println(beanobject.getVariable1());
String path = "com.OP.app.Bean";
Class<?> newClass;
try {
newClass = Class.forName(path);
Object obj = newClass.newInstance();
String getMethod = "getVariable2";
Method getNameMethod = obj.getClass().getMethod(getMethod);
String name = (String) getNameMethod.invoke(obj);
System.out.println(name);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // convert string classname to class
}
}
輸出: 拉姆 空
這不起作用:'Class.forName'需要完整的類名,而不是包名。但是'Class > beanClazz = Bean.class;'無論如何都比較容易。 – CoronA
你說得對。這個bean類需要完整的類名(getName()這樣做)。 'Class > beanClazz = Bean.class;'比較容易,但是如果只在運行時才知道類,那麼硬編碼類聲明就無法做任何事情。 –