最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 內(nèi)省introspector相關(guān)原理代碼解析

 更新時(shí)間:2020年07月29日 09:20:55   作者:htj10  
這篇文章主要介紹了Java 內(nèi)省introspector相關(guān)原理代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1. JavaBean (有g(shù)et/set屬性,和默認(rèn)構(gòu)造器等規(guī)范的java類(lèi))

import java.util.Date;

public class Student {
  // 這是 字段
  private String name;
  private int age;
  private Date birthday;

  // 這是 屬性 
  //(get、set開(kāi)頭的方法,getName、setName算一個(gè)屬性,單獨(dú)一個(gè)set或get也算一個(gè)屬性)
  // 屬性名為 去掉get、set后 第一個(gè)大寫(xiě)字母變小寫(xiě)字母。
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }
  
  public int getAbc(){ //注意這也是一個(gè)屬性,屬性名為 abc
    return 10;
  }
  /*
  public int getefg(){ //注意這也是一個(gè)屬性,屬性名為 efg
    return 10;
  }*/

  public Date getBirthday() {
    return birthday;
  }

  public void setBirthday(Date birthday) {
    this.birthday = birthday;
  }

}

測(cè)試

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

public class Test1 {
  public static void main(String[] args) throws Exception {
    test05();
  }

  // 獲取屬性描述器 Introspector.getBeanInfo(Student.class).getPropertyDescriptors();
  private static void test01() throws Exception {
    BeanInfo bf = Introspector.getBeanInfo(Student.class);
    PropertyDescriptor[] pds = bf.getPropertyDescriptors();
    for (PropertyDescriptor pd : pds) {
      System.out.println(pd.getName());
    }
    /*
      abc
      age
      class //這個(gè)是Object類(lèi)里的
      name
     */
  }
  
  // 使用內(nèi)省 調(diào)用set、get方法
  private static void test02() throws Exception {
    Student stu = new Student();
    PropertyDescriptor pd = new PropertyDescriptor("name", Student.class);
    Method setter = pd.getWriteMethod();
    setter.invoke(stu, "tom");
    Method getter = pd.getReadMethod();
    System.out.println(getter.invoke(stu));
  }
  
  
  /**
   * 以上使用的 java源碼里的 java.beans包
   * 接下來(lái)有更方便的,Apache 組織提供的 commons-beanutils-1.8.3.jar 
   * 導(dǎo)入:commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar
   */
  private static void test03() throws Exception{
    Student stu = new Student();
    BeanUtils.setProperty(stu, "name", "白居易");
    System.out.println(stu.getName());
    String name = BeanUtils.getProperty(stu, "name");
    System.out.println(name);
    //BeanUtils 支持8中基本類(lèi)型 自動(dòng)轉(zhuǎn)換
    BeanUtils.setProperty(stu, "age", 19);
    BeanUtils.setProperty(stu, "age", "18");
    System.out.println(stu.getAge());
    //PropertyUtils.setSimpleProperty(stu, name, value);
  }
  
  private static void test04() throws Exception{
    Student stu = new Student();
    //set/get 日期 Date
    ConvertUtils.register(new DateLocaleConverter(), Date.class);
    BeanUtils.setProperty(stu, "birthday", "1999-11-10");
    System.out.println(stu.getBirthday());
    String s = BeanUtils.getProperty(stu, "birthday");
    System.out.println(s);
  }
  
  /**
   * 一下整個(gè)賦值給 javaBean 對(duì)象,使用 BeanUtils.populate
   * @throws Exception
   */
  private static void test05() throws Exception{
    Student stu = new Student();
    Map m = new HashMap();
    m.put("name", "Lee");//注意:key名一定要與對(duì)象中的變量名一致
    m.put("age", "18");//注意:key名一定要與對(duì)象中的變量名一致
    m.put("birthday", "2020-7-4");//注意:key名一定要與對(duì)象中的變量名一致
    
    ConvertUtils.register(new DateLocaleConverter(), Date.class);
    BeanUtils.populate(stu, m);
    System.out.println(stu.getBirthday());
    
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

南平市| 工布江达县| 杭州市| 台江县| 漳平市| 贞丰县| 吴桥县| 富锦市| 红安县| 同心县| 巴林右旗| 北宁市| 朔州市| 永泰县| 古丈县| 贵港市| 太保市| 冀州市| 大理市| 商丘市| 荃湾区| 凤阳县| 吉隆县| 敦煌市| 滁州市| 平塘县| 尚义县| 临沭县| 景宁| 诸城市| 米泉市| 水城县| 呼伦贝尔市| 岢岚县| 博兴县| 遵义县| 大安市| 湖州市| 罗江县| 卓资县| 崇州市|