java 基础 反射,自动装配实体

来源:互联网 发布:知乎开放注册时间 编辑:程序博客网 时间:2024/06/05 16:55

反射: 

//读取配置文件 后缀名为party.porperties  
String className=ResourceBundle.getBundle("party").getString("actor");//对应一类对象
//获取该类名
     Class<?> c=Class.forName(className);
//创建实例
     (Actor)c.newInstance();


--自动装配

    //构建装配内容

public static Map<String, String> GetData() {
Map<String, String> map = new HashMap<String, String>();
map.put("name", "海利");
map.put("age", "22");
map.put("gender", "F");
return map;
}

// 自动装配实体
public static void AutoWire(Object o, Map<String, String> map)
throws Exception {
// 获取map所有key
Set<String> keys = map.keySet();
// 获取Class对象
Class c = o.getClass();
// 获取所有属性
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
// 获取属性名
String fieldname = field.getName();
if (map.containsKey(fieldname)) {
// 获取属性名在map中对应de值
String value = map.get(fieldname);
// 改变私有变量可见性
field.setAccessible(true);
// 给对象 o属性field赋值
field.set(o, value);
}
}
}

调用代码

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Map<String, String> map = GetData();
Person person = new Person();//中有age,name私有属性
AutoWire(person, map);
System.out.println(person.getAge());
System.out.println(person.getName());
}

0 0
原创粉丝点击