代码如下,会发生java.lang.NoSuchMethodException异常。
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
class MyClass{
public int intField;
public String strField;
public MyClass(){
}
public int getIntField() {
return intField;
}
public void setIntField(int intField) {
this.intField = intField;
}
public String getStrField() {
return strField;
}
public void setStrField(String strField) {
this.strField = strField;
}
@Override
public String toString() {
return intField + " " + strField;
}
}
public class TestReflection {
public static void main(String[] args) {
Class cls = null;
try {
cls = Class.forName("MyClass");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Object obj = null;
try {
obj = cls.newInstance();
} catch (InstantiationException | IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Field fs[] = cls.getFields();//获取所有public的属性
Map<String, Object> map = new HashMap<>();
map.put("intField", 10);
map.put("strField", "memeda");
for(Field f:fs){
String fieldName = f.getName();//得到该属性名
Object fieldValue = map.get(fieldName);//得到属性值
String methodName = "set"+ fieldName.substring(0, 1).toUpperCase() +
fieldName.substring(1);
System.out.println(methodName);
SMILET
相关分类