欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 采用反射獲取class屬性值的實現代碼

 更新時間:2013年08月26日 10:16:57   作者:  
以下是對在Java中采用反射獲取class屬性值的實現代碼進行了分析介紹,需要的朋友可以過來參考下
原理:Java的反射能夠獲取屬性的名稱,然后通過invoke調用類的某個方法。
比如有個屬性叫userName,這個類寫了個方法叫getUserName,通過invoke調用getUserName這個方法。
代碼如下
復制代碼 代碼如下:

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class ParameterBase
{
    /**
     * Get Class field and value Map
     * @return
     */
    public Map<String, String> getClassInfo()
    {
        Map<String ,String>  fieldsAndValues = new HashMap<String, String>();
        Field [] fields = this.getClass().getDeclaredFields();
        for(int i=0; i< fields.length; i++)
        {
            Field f = fields[i];
            String value = getFieldValue(this ,f.getName()).toString();
            fieldsAndValues.put(f.getName(),value);
        }
      return fieldsAndValues;
    } 

   

    private  String getFieldValue(Object owner, String fieldName)
    {
        return invokeMethod(owner, fieldName,null).toString();
    }

   
    /**
     *
     * 執(zhí)行某個Field的getField方法
     *
     * @param owner 類
     * @param fieldName 類的屬性名稱
     * @param args 參數,默認為null
     * @return
     */
    private   Object invokeMethod(Object owner, String fieldName, Object[] args)
    {
        Class<? extends Object> ownerClass = owner.getClass();

        //fieldName -> FieldName 
        String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);

        Method method = null;
        try
        {
            method = ownerClass.getMethod("get" + methodName);
        }
        catch (SecurityException e)
        {
            //e.printStackTrace();
        }
        catch (NoSuchMethodException e)
        {
            // e.printStackTrace();
            return "";
        }

        //invoke getMethod
        try
        {
            return method.invoke(owner);
        }
        catch (Exception e)
        {
            return "";
        }
    }
}

寫一個類User繼承于ParameterBase并寫上一個測試代碼
復制代碼 代碼如下:

public class User extends ParameterBase
{
    String userName ;
    String passWorld;
    public String getUserName()
    {
        return userName;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    public String getPassWorld()
    {
        return passWorld;
    }
    public void setPassWorld(String passWorld)
    {
        this.passWorld = passWorld;
    }

    public static void main(String[] args)
    {
        User u = new  User();
        u.passWorld = "123";
        u.userName = "aaaaa";
        System.out.println(u.getClassInfo().toString());

    }
}

程序輸出
復制代碼 代碼如下:

{passWorld=123, userName=aaaaa}

相關文章

  • Java實體類之間的相互轉換方式

    Java實體類之間的相互轉換方式

    這篇文章主要介紹了Java實體類之間的相互轉換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • eclipse啟動一個Springboot項目

    eclipse啟動一個Springboot項目

    本文主要介紹了eclipse啟動一個Springboot項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • java項目中的絕對路徑和相對路徑用法說明

    java項目中的絕對路徑和相對路徑用法說明

    這篇文章主要介紹了java項目中的絕對路徑和相對路徑用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 抽象類使用Jackson序列化問題

    抽象類使用Jackson序列化問題

    這篇文章主要介紹了抽象類使用Jackson序列化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 深入了解Java虛擬機棧以及內存模型

    深入了解Java虛擬機棧以及內存模型

    這篇文章主要介紹了深入了解Java虛擬機棧以及內存模型,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-04-04
  • java實現fibonacci數列學習示例分享(斐波那契數列)

    java實現fibonacci數列學習示例分享(斐波那契數列)

    這篇文章主要介紹了fibonacci數列(斐波那契數列)示例,大家參考使用吧
    2014-01-01
  • Spring中@PostConstruct注解的使用講解

    Spring中@PostConstruct注解的使用講解

    這篇文章主要介紹了Spring中@PostConstruct注解的使用講解,被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,并且只會被服務器執(zhí)行一次,PostConstruct在構造函數之后執(zhí)行,init()方法之前執(zhí)行,PreDestroy()方法在destroy()方法之后執(zhí)行,需要的朋友可以參考下
    2023-11-11
  • Java日志框架用法及常見問題解決方案

    Java日志框架用法及常見問題解決方案

    這篇文章主要介紹了Java日志框架用法及常見問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot數據校驗功能的實現

    SpringBoot數據校驗功能的實現

    這篇文章主要介紹了SpringBoot數據校驗功能的實現,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Java實現動態(tài)模擬時鐘

    Java實現動態(tài)模擬時鐘

    這篇文章主要為大家詳細介紹了Java實現動態(tài)模擬時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論