溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

什么是單級屬性賦值

發(fā)布時間:2021-10-13 14:27:54 來源:億速云 閱讀:104 作者:iii 欄目:編程語言

這篇文章主要介紹“什么是單級屬性賦值”,在日常操作中,相信很多人在什么是單級屬性賦值問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是單級屬性賦值”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

單級屬性配置

對于此時的Emp類中會發(fā)現(xiàn)所給出的數(shù)據(jù)類型都沒有其他的引用關(guān)聯(lián)了,只是描述了Empty本類的對象,所以這樣的設(shè)置稱為單級設(shè)置處理,所以此時應(yīng)該處理兩件事情:

  • 需要通過反射進(jìn)行指定類對象的實例化處理;

  • 進(jìn)行內(nèi)容的設(shè)置(Field屬性類型、方法名稱、要設(shè)置的內(nèi)容);

什么是單級屬性賦值
反射與簡單Java類

1、定義StringUtils實現(xiàn)首字母大寫功能

class StringUtils {public static String initcap(String str) {if (str == null || "".equals(str)) {return str;
        }if (str.length() == 1) {return str.toUpperCase();
        }else {return str.substring(0, 1).toUpperCase() + str.substring(1);
        }
    }
}

2、定義BeanUtils工具類,該工具類主要實現(xiàn)屬性的設(shè)置。

class BeanUtils{   //進(jìn)行Bean處理的類private BeanUtils(){}/**
     * 實現(xiàn)指定對象的屬性設(shè)置
     * @param obj 要進(jìn)行反射操作的實例化對象
     * @param value 包含有指定內(nèi)容的字符串,格式"屬性:內(nèi)容|屬性:內(nèi)容"
     */public static void setValue(Object obj,String value){
        String results [] = value.split("\\|");//按照"|"進(jìn)行每一組屬性的拆分for (int x = 0; x < results.length; x ++) {   //循環(huán)設(shè)置屬性內(nèi)容//attval [0]保存的是屬性名稱,attval [1]保存的是屬性內(nèi)容String attval [] = results[x].split(":");   //獲取“屬性名稱”和內(nèi)容try {
                Field field = obj.getClass().getDeclaredField(attval[0]);  //獲取成員Method setMethod = obj.getClass().getDeclaredMethod("set" + StringUtils.initcap(attval [0]), field.getType());
                setMethod.invoke(obj, attval [1]);  //調(diào)用setter方法設(shè)置內(nèi)容}catch (Exception e) {}
        }
    }
}

3、ClassInstanceFactory負(fù)責(zé)實例化對象并且調(diào)用BeanUtils類實現(xiàn)屬性內(nèi)容的設(shè)置。

class ClassInstanceFactory{private ClassInstanceFactory(){}/**
     * 實例化對象的創(chuàng)建方法,該對象可以根據(jù)傳入的字符串結(jié)構(gòu):"屬性:內(nèi)容|屬性:內(nèi)容"
     * @param clazz 要進(jìn)行反射實例化的Class對象,有Class就可以反射實例化對象
     * @param value 要設(shè)置給對象的屬性內(nèi)容
     * @return 一個已經(jīng)配置好屬性內(nèi)容的Java對象
     */public static <T> T create(Class<?> clazz,String value){// 如果要想采用反射進(jìn)行簡單Java類對象屬性設(shè)置的時候,類中必須要有無參構(gòu)造try {
            Object obj = clazz.getDeclaredConstructor().newInstance();
            BeanUtils.setValue();   //通過反射設(shè)置屬性return (T) obj; //返回對象}catch (Exception e) {
            e.printStackTrace();  //如果此時真的出現(xiàn)了錯誤,本質(zhì)上拋出異常也沒用return null;
        }    
    }
}

即使類中的屬性再多,那么也可以輕松的實現(xiàn)setter的調(diào)用(類對象實例化處理)。

到此,關(guān)于“什么是單級屬性賦值”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI