JAVA 獲取Bean對象的屬性名和該屬性對應的值

主要使用到了java.beans包下的類,利用底層反射來獲取對象對應的屬性和方法;

** BeanInfo **:提供有關Bean的顯式信息的接口,其中包含類的屬性,方法、事件等顯式信息,可以通過Introspector底層反射機制獲取


** Introspector **:用于構建一個一個全面描述目標bean的BeanInfo對象,使用低層次的反射來研究類的方法,并應用標準設計模式來標識屬性存儲器、事件源或公共方法。然后深入分析類的超類,并從它那里添加信息


** PropertyDescriptor ** :描述 Java Bean 通過一對存儲器方法導出的一個屬性以及該屬性的getter和setter方法


相關實現代碼:


  public void test(Project project){
        BeanInfo beanInfo;
        try{
            //throws IntrospectionException
            beanInfo=Introspector.getBeanInfo(project.getClass(), Object.class);
            if(beanInfo!=null){
                PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
                for(PropertyDescriptor p:propertyDescriptors){
                    //獲得屬性名稱
                    System.err.println(p.getName());
                    //調用該屬性名稱對應的getter方法
                    //throws IntrospectionException,InvocationTargetException,IllegalAccessException
                    Object obj = new PropertyDescriptor(p.getName(), Project.class).getReadMethod().invoke(project);
                    //調用該屬性名稱對應的setter方法
                    //throws IntrospectionException,InvocationTargetException,IllegalAccessException
                    new PropertyDescriptor(p.getName(), Project.class).getWriteMethod().invoke(project,new Object[]{"1"});
                }
            }

        }catch (IntrospectionException e){

        }catch (InvocationTargetException e1){

        }catch (IllegalAccessException e2){

        }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,971評論 6 342
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan閱讀 4,206評論 2 7
  • 聲明方式 let局部聲明 上面兩個例子說明了let是局部變量聲明,let聲明只在區塊內起作用,外部是不可以調用的。...
    AkiraSun閱讀 200評論 0 0