`

java反射自动填充

 
阅读更多
package com.cgm;

public class Person {

private String name;
private String age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public Person() {
System.out.println("Person...");
}

@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}

public Person(String name, String age) {

this.name = name;
this.age = age;
}

}

package com.cgm;

public class Worker {

private String name;
private String age;
private String money;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public String getMoney() {
return money;
}

public void setMoney(String money) {
this.money = money;
}

public Worker() {
System.out.println("worker");
}

@Override
public String toString() {
return "Worker [name=" + name + ", age=" + age + ", money=" + money + "]";
}

}

package com.cgm;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {

Map<String, String> map = new HashMap<String, String>();
map.put("name", "lisi");
map.put("age", "18");
map.put("addr", "hunan");
map.put("tel", "18674838758");
map.put("mail", "578994358@qq.com");
ResourceBundle bundle = ResourceBundle.getBundle("data");
// ResourceBundle.getBundle(baseName)
String className = bundle.getString("className");
try {
Class clazz = Class.forName(className);
Object obj = clazz.newInstance();

autoWire(map, obj);
System.out.println(obj);
} catch (Exception e) {
e.printStackTrace();
}

}

private static void autoWire(Map<String, String> map, Object obj) {

try {
Class clazz = obj.getClass(); //通过反射得到字节码对象
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
String value = map.get(fieldName);
System.out.println(value);

System.out.println(field.getName());
if (value != null) {
field.setAccessible(true);
field.set(obj, value);
}

// Person p = (Person) obj;
//p.setName(value);

}
} catch (Exception e) {
e.printStackTrace();
}

}

}


配置文件 放到src路径下  data.properties
className=com.cgm.Person



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics