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

Java 采用反射獲取class屬性值的實(shí)現(xiàn)代碼

 更新時(shí)間:2013年08月26日 10:16:57   作者:  
以下是對(duì)在Java中采用反射獲取class屬性值的實(shí)現(xiàn)代碼進(jìn)行了分析介紹,需要的朋友可以過(guò)來(lái)參考下
原理:Java的反射能夠獲取屬性的名稱,然后通過(guò)invoke調(diào)用類的某個(gè)方法。
比如有個(gè)屬性叫userName,這個(gè)類寫(xiě)了個(gè)方法叫g(shù)etUserName,通過(guò)invoke調(diào)用getUserName這個(gè)方法。
代碼如下
復(fù)制代碼 代碼如下:

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í)行某個(gè)Field的getField方法
     *
     * @param owner 類
     * @param fieldName 類的屬性名稱
     * @param args 參數(shù),默認(rèn)為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 "";
        }
    }
}

寫(xiě)一個(gè)類User繼承于ParameterBase并寫(xiě)上一個(gè)測(cè)試代碼
復(fù)制代碼 代碼如下:

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());

    }
}

程序輸出
復(fù)制代碼 代碼如下:

{passWorld=123, userName=aaaaa}

相關(guān)文章

  • @MapperScan掃描包里混有@Service等問(wèn)題如何解決

    @MapperScan掃描包里混有@Service等問(wèn)題如何解決

    這篇文章主要介紹了@MapperScan掃描包里混有@Service等問(wèn)題如何解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • JVM內(nèi)存增強(qiáng)之逃逸分析

    JVM內(nèi)存增強(qiáng)之逃逸分析

    逃逸分析一種數(shù)據(jù)分析算法,基于此算法可以有效減少Java對(duì)象在堆內(nèi)存中的分配。本文將詳細(xì)講講逃逸分析的原理與實(shí)現(xiàn),需要的可以參考一下
    2022-09-09
  • JAVA中反射機(jī)制和模塊化的深入講解

    JAVA中反射機(jī)制和模塊化的深入講解

    很多剛學(xué)Java反射的同學(xué)可能對(duì)反射技術(shù)一頭霧水,為什么要學(xué)習(xí)反射,學(xué)習(xí)反射有什么作用,下面這篇文章主要給大家介紹了關(guān)于JAVA中反射機(jī)制和模塊化的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Java使用Graphics2D實(shí)現(xiàn)字符串文本自動(dòng)換行

    Java使用Graphics2D實(shí)現(xiàn)字符串文本自動(dòng)換行

    這篇文章主要為大家詳細(xì)介紹了Java如何使用Graphics2D實(shí)現(xiàn)字符串文本自動(dòng)換行,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • SpringSecurity實(shí)現(xiàn)自定義登錄方式

    SpringSecurity實(shí)現(xiàn)自定義登錄方式

    本文介紹自定義登錄流程,包括自定義AuthenticationToken、AuthenticationFilter、AuthenticationProvider以及SecurityConfig配置類,詳細(xì)解析了認(rèn)證流程的實(shí)現(xiàn),為開(kāi)發(fā)人員提供了具體的實(shí)施指導(dǎo)和參考
    2024-09-09
  • 基于springboot實(shí)現(xiàn)數(shù)據(jù)可視化的示例代碼

    基于springboot實(shí)現(xiàn)數(shù)據(jù)可視化的示例代碼

    本文主要介紹了基于springboot實(shí)現(xiàn)數(shù)據(jù)可視化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-07-07
  • spring boot jpa寫(xiě)原生sql報(bào)Cannot resolve table錯(cuò)誤解決方法

    spring boot jpa寫(xiě)原生sql報(bào)Cannot resolve table錯(cuò)誤解決方法

    在本篇文章里小編給大家整理的是關(guān)于spring boot jpa寫(xiě)原生sql報(bào)Cannot resolve table錯(cuò)誤的解決方法,需要的朋友學(xué)習(xí)下。
    2019-11-11
  • Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?column?'XXX'?in?'field?list'的問(wèn)題解決

    Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?c

    這篇文章主要介紹了Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?column?'XXX'?in?'field?list',需要的朋友可以參考下
    2023-04-04
  • Java導(dǎo)出txt文件的方法

    Java導(dǎo)出txt文件的方法

    這篇文章主要介紹了Java導(dǎo)出txt文件的方法,實(shí)例分析了兩種java導(dǎo)出txt文本文件的使用技巧,需要的朋友可以參考下
    2015-05-05
  • JAVA中StackOverflowError錯(cuò)誤的解決

    JAVA中StackOverflowError錯(cuò)誤的解決

    這篇文章主要介紹了JAVA中StackOverflowError錯(cuò)誤的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

博爱县| 阿坝县| 七台河市| 宁河县| 肃宁县| 历史| 新宾| 罗山县| 梁山县| 灌南县| 马公市| 将乐县| 达尔| 京山县| 邓州市| 彝良县| 深泽县| 沈阳市| 邵阳市| 确山县| 普定县| 隆化县| 商南县| 台江县| 巴塘县| 平塘县| 安福县| 周口市| 无为县| 彰武县| 玛纳斯县| 九龙城区| 望谟县| 唐河县| 吉林市| 辽源市| 富蕴县| 弋阳县| 隆林| 义马市| 丽江市|