关于一个java映射的demo
1、主要有四个文件
(1)Test.java
package demo1;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
public class Test {
public static void main(String[] args) throws Exception, IllegalAccessException{
//在数据集初始化字段值
Map map=new HashMap();
map.put("name","zyc");
map.put("age", "26");
//获取properties文件内对应键值
ResourceBundle resource=ResourceBundle.getBundle("data");
String className=resource.getString("className");
//获取对应的class文件
Class Clazz=Class.forName(className);
//huoquclass文件对应的实例对象
Object obj=Clazz.newInstance();
//自动填充对象obj的字段值
autoFile(obj,map);
//输出对象obj字段初始化后的值
System.out.println(obj);
}
private static void autoFile(Object obj, Map map) throws Exception, IllegalAccessException {
//获取对象obj的class文件
Class clazz=obj.getClass();
//通过class获取字节码对象所有声明字段
Field[] fields=clazz.getDeclaredFields();
for (Field f:fields){
//获取字段名称
String key=f.getName();
//根据字段名称获取字段值
String value=map.get(key);
//System.out.println(key+"="+value);
if(value != null){
//设置字段访问权限
f.setAccessible(true);
//设置对应的对象字段所对应的字段值
f.set(obj, value);
}
}
}
}
(2)Person.java
package domain;
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;
}
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
public Person() {
System.out.println("Person构造方法");
}
}
(3)Worker.java
package domain;
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;
}
@Override
public String toString() {
return "Worker [age=" + age + ", money=" + money + ", name=" + name
+ "]";
}
public Worker() {
System.out.println("Worker构造方法");
}
}
(4)data.properties
className=domain.Person