欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java反射中java.beans包的用法-創(chuàng)新互聯(lián)

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

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供威遠(yuǎn)網(wǎng)站建設(shè)、威遠(yuǎn)做網(wǎng)站、威遠(yuǎn)網(wǎng)站設(shè)計(jì)、威遠(yuǎn)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、威遠(yuǎn)企業(yè)網(wǎng)站模板建站服務(wù),十載威遠(yuǎn)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

看一個(gè)例子:

NodeDO.java:一個(gè)標(biāo)準(zhǔn)的javabean對(duì)象

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; 
  } 
}

我們想實(shí)現(xiàn)類似這樣的功能:

public static void main(String[] args) throws Exception{ 
    Map<String, String> parameters = new HashMap<String, String>(){ 
      { 
        put("nodeName", "小胖測(cè)試"); 
        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這個(gè)map轉(zhuǎn)化成TestDO的對(duì)象,該如何來做呢?

(1)首先要定義一個(gè)用來轉(zhuǎn)化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)做轉(zhuǎn)化:

public class PropertyEditorSample { 
 
  static{ 
    PropertyEditorManager.registerEditor(NodeDO.class, DodeDOEditor.class); 
  } 
   
  public static void main(String[] args) throws Exception{ 
    Map<String, String> parameters = new HashMap<String, String>(){ 
      { 
        put("nodeName", "小胖測(cè)試"); 
        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<String, String> 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; 
  } 
 
}

其實(shí)關(guān)鍵點(diǎn)就兩句話

<pre name="code" class="java">editor.setAsText(parameters.get(pd.getName()));//1 
editor.getValue();//2 
//因此,一般都會(huì)在setAsText中去調(diào)用setValue()來保存轉(zhuǎn)化以后的值,這樣通過getValue()就能獲取到了

到此,關(guān)于“Java反射中java.beans包的用法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)頁題目:Java反射中java.beans包的用法-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article12/dshedc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃搜索引擎優(yōu)化、虛擬主機(jī)網(wǎng)站建設(shè)、Google、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
亚洲欧美日韩成人在线| 国产伦一区二区三区三州| 亚洲精品欧美日韩久久| 日韩精品不卡在线观看| 国产老熟女一区二区三区| 国产精品一区二区污网站| 日韩中文字幕亚洲精品一| 精品一区2区3区4区| 亚洲av天堂在线观看| 国产精品一区二区污网站| 亚洲黄色av电影在线| 国产精品va在线观看入口| 亚洲国产精品久久久久久99| 麻豆av永久地址久久精品| 人妻熟妇一区二区三区成人| 日本高清有码中文字幕| 黑寡妇精品欧美一区二区毛| 日韩一区二区三级电影| 欧美+亚洲+精品+三区| 中文字幕欧美精品日韩人妻| 国产精品黄色91熟女| 国产成人精品久久性色av| 亚洲一区二区三区av电影| 成年午夜福利片在线观看| 真人国产一级美女免费视频| 中文字幕二区三区人妻| 91久久精品凹凸一区二区| 亚洲美女香蕉视频在线| 国产v精品欧美精品v日韩| 精品国产美女诱惑久久久| 国产精品久久99精品| 欧美十八一区二区三区| 久久九九亚洲欧美中文字幕| 91伊人久热精品午夜福利| 欧美成人精品三级一二| 欧美日韩高清一区二区三区| 午夜国产精品福利一二| 国产欧美日韩精品国产| 在线播放国内自拍情侣酒店| 国产精品剧情在线播放| 麻豆映画传媒在线播放|