简单的spring使用反射实现属性赋值demo

来源:互联网 发布:淘宝活动页面代码 编辑:程序博客网 时间:2024/06/05 20:54
class Domain implements Serializable {private String name;private Date date;public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}@Overridepublic String toString() {return "Domain [name=" + name + ", date=" + date + "]";}}


class MyDomain implements Serializable {private String name;private Integer id;private Domain domain;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Domain getDomain() {return domain;}public void setDomain(Domain domain) {this.domain = domain;}@Overridepublic String toString() {return "MyDomain [name=" + name + ", id=" + id + ", domain=" + domain+ "]";}}


package com.concurrent;import java.beans.PropertyEditorSupport;import java.text.ParseException;import java.text.SimpleDateFormat;public class DomainEditor extends PropertyEditorSupport {private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");@Overridepublic void setAsText(String text) throws IllegalArgumentException {String[] toke = text.split("\\|");String name = toke[0];String date = toke[1];Domain domain = new Domain();domain.setName(name);try {domain.setDate(DATE_FORMAT.parse(date));} catch (ParseException e) {throw new IllegalArgumentException(e);}setValue(domain);}}


package com.concurrent;import java.beans.PropertyDescriptor;import java.beans.PropertyEditor;import java.beans.PropertyEditorManager;import java.io.Serializable;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Date;import java.util.HashMap;import java.util.Map;public class Test002 {private static final Field[] FIELDS = MyDomain.class.getDeclaredFields();static {PropertyEditorManager.registerEditor(Domain.class, DomainEditor.class);}public static void main(String[] args) throws Exception {Map<String, String> map = new HashMap<String, String>();map.put("name", "老王");map.put("id", "1");map.put("domain", "laozhang|1989-05-09 11:11:11");MyDomain myDomain = stringToDomain(map);System.out.println(myDomain);}public static MyDomain stringToDomain(Map<String, String> map)throws Exception {MyDomain myDomain = new MyDomain();for (Field field : FIELDS) {PropertyDescriptor propertyDescriptor = new PropertyDescriptor(field.getName(), MyDomain.class);Method method = propertyDescriptor.getWriteMethod();if (field.getType() == String.class) {method.invoke(myDomain, map.get(field.getName()));} else if (field.getType() == Integer.class) {method.invoke(myDomain,Integer.parseInt(map.get(field.getName())));} else {PropertyEditor editor = PropertyEditorManager.findEditor(Domain.class);if (editor != null) {editor.setAsText(map.get(field.getName()));method.invoke(myDomain, editor.getValue());} else {System.out.println("wrong properties!!" + field.getName());}}}return myDomain;}}


0 0
原创粉丝点击