精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

Java反射中java.beans包的用法

這篇文章主要介紹“Java反射中java.beans包的用法”,在日常操作中,相信很多人在Java反射中java.beans包的用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java反射中java.beans包的用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

成都創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站建設、成都網站制作、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的樂業網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

看一個例子:

NodeDO.java:一個標準的javabean對象

public class NodeDO {
	private String name;
	private String email;
	private Date date;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	@Override
	public String toString() {
		return "NodeDO [name=" + name + ", email=" + email + ", date=" + DodeDOEditor.sdf.format(date) + "]";
	}
}

TestDO.java一樣,里面引用了NodeDO:

public class TestDO { 
  private String nodeName; 
  private NodeDO nodeDO; 
  public String getNodeName() { 
    return nodeName; 
  } 
  public void setNodeName(String nodeName) { 
    this.nodeName = nodeName; 
  } 
  public NodeDO getNodeDO() { 
    return nodeDO; 
  } 
  public void setNodeDO(NodeDO nodeDO) { 
    this.nodeDO = nodeDO; 
  } 
}

我們想實現類似這樣的功能:

public static void main(String[] args) throws Exception{ 
    Map parameters = new HashMap(){ 
      { 
        put("nodeName", "小胖測試"); 
        put("nodeDO", "xiaopang|xiaopang@163.com|2015-10-20 12:00:00"); 
      } 
    };  
    TestDO testDo = convert(parameters); 
    System.out.println(testDo.getNodeName()); 
    System.out.println(testDo.getNodeDO()); 
  }

把parameters這個map轉化成TestDO的對象,該如何來做呢?

(1)首先要定義一個用來轉化Property的PropertyEditor:

public class DodeDOEditor extends PropertyEditorSupport{ 
   
  public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
   
  @Override 
  public void setAsText(String text) throws IllegalArgumentException{ 
    String[] tokens = text.split("\\|"); 
    NodeDO nodeDo = new NodeDO(); 
    nodeDo.setName(tokens[0]); 
    nodeDo.setEmail(tokens[1]); 
    try{ 
      nodeDo.setDate(sdf.parse(tokens[2])); 
    }catch(ParseException e){ 
      throw new IllegalArgumentException(e); 
    } 
    setValue(nodeDo); 
  } 
}

(2)做轉化:

public class PropertyEditorSample { 
 
  static{ 
    PropertyEditorManager.registerEditor(NodeDO.class, DodeDOEditor.class); 
  } 
   
  public static void main(String[] args) throws Exception{ 
    Map parameters = new HashMap(){ 
      { 
        put("nodeName", "小胖測試"); 
        put("nodeDO", "xiaopang|xiaopang@163.com|2015-10-20 12:00:00"); 
      } 
    };  
    TestDO testDo = convert(parameters); 
    System.out.println(testDo.getNodeName()); 
    System.out.println(testDo.getNodeDO()); 
  } 
 
  private static TestDO convert(Map parameters)throws Exception { 
    TestDO testDO = new TestDO(); 
    BeanInfo bi = Introspector.getBeanInfo(TestDO.class);  
    PropertyDescriptor[] pds = bi.getPropertyDescriptors();  
    for(PropertyDescriptor pd : pds){ 
      Class propertyType = pd.getPropertyType(); 
      Method writeMethod = pd.getWriteMethod(); 
      if(propertyType == Class.class){ 
        //ignore 
      }else if(propertyType == String.class){ 
        writeMethod.invoke(testDO, parameters.get(pd.getName())); 
      }else{ 
        PropertyEditor editor = PropertyEditorManager.findEditor(propertyType); 
        if(editor != null){ 
          editor.setAsText(parameters.get(pd.getName())); 
          writeMethod.invoke(testDO, editor.getValue()); 
        }else{ 
          System.out.println("no editor for:"+pd.getName()); 
        } 
      } 
    } 
    return testDO; 
  } 
 
}

其實關鍵點就兩句話

editor.setAsText(parameters.get(pd.getName()));//1 
editor.getValue();//2 
//因此,一般都會在setAsText中去調用setValue()來保存轉化以后的值,這樣通過getValue()就能獲取到了

到此,關于“Java反射中java.beans包的用法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!


標題名稱:Java反射中java.beans包的用法
分享網址:http://m.jcarcd.cn/article/jhheej.html
主站蜘蛛池模板: 最新国产手机在线观看 | 青青操视频免费观看 | 国产免费一级高清 | 国产主播在线播放 | 女同学浮乱系列 | 国产精品视频网国产 | 欧美制服二区 | 国产亚洲精品无 | aⅴ亚洲男人 | 精品小说每天送 | 国产老肥熟 | 91短视频视频 | 国产乱理伦片 | 国产乱码一区二区三 | 日本免费三片在 | 91福利片在线观看 | 国产精品自在线拍国 | 日本五级床片午 | 日本精品国产 | 国产玉足榨精视频 | 日本成人观看 | 日韩一级在线视频 | 国产精品亚洲а∨无 | 日本www网站| 国产好吊日 | 福利视屏网 | 日韩精品在线开放 | 国产系列视 | 成人高清视频 | 91福利在线视频 | 久一视频导航 | 人在线播放乱妇# | 99热婷| 韩国午夜插插 | 国产伦精品一区 | 97se国产在线 | 国区自拍 | 国内盗摄 | 蜜臀98精| 91同志app | 玖玖爱电影韩国午夜 |