BeanUtils原始碼分析及其使用

2021-09-10 02:55:13 字數 1391 閱讀 4948

在文章開頭我還得回想回想我當時從前台接收資料的艱辛歷程,一行行的get

parameter看這都心裡犯狠,這些沒有任何技術含量的事要做這麼多遍,後來呢我就發現了getparametermap這個api(有點尷尬),就自己寫了個遍歷的工具類,但是故事並不是這麼完美的,因為我要new 乙個bean給它賦值,然後我就又開始了我的艱辛歷程了(說多了都是淚),我當時就在想有沒有什麼方法讓我從這解放出來呢(當時可不太懂這個怎麼寫),放寒假了就圓圓我當時的夢想吧哈哈畢竟以後用的地方還多著勒。

還是老規矩對它先進行一頓原理分析:

1.先用增強的for把全部的鍵值對遍歷出來,注意value要用陣列來裝,因為如果是多選的話乙個肯定是不夠的。

2.利用反射拿到bean的所有 方法,和第一步取出來的keyset比對,如果一樣的話就呼叫set方法

3.如果資料型別是日期型別,要轉化為標準的日期型別,否則會報錯,我的除錯如下(這一步不能固定在方法裡,因為日期型別的分隔符不確定)

我開始實現的時候沒注意date型別的資料導致出錯

這個是沒有時間型別的,執行結果如下是正確的

這個是有時間型別的,會報錯,那麼怎麼解決呢

然後我加上了時間轉換器,但是還是這個錯誤,然後我仔細觀察了下錯誤,然後發現是我的bean裡的date導包導錯了,要是util下的data。下邊就是我成功的

在這裡插入描述

實現方式

1.傳入引數obj,可以將bean物件傳進去,利用date包建立乙個時間轉換器再用beannutils下的convertutil註冊,然後呼叫beanutil的populate方法

public static void populate(object obj, mapmap)  catch (exception e) 

}

2.傳入bean的類,利用反射獲取到bean物件,利用泛型實現bean的反射物件的返回,到這不得不說反射是真的強大啊,只有隱式的和無參的才能用newinstence()

public statict  populate(classclazz, mapmap)  catch (exception e) 		

}

恭喜你看到了最後,相信你收穫一定很多吧哈哈,滿滿的乾貨,準備周全才能在開發中有更好的遊戲體驗不是嘛。圓夢了圓夢了哈哈。

JDK類載入機制原始碼分析及原始碼分析

jvm的類載入機制主要有如下三種機制 1.全盤負責 所謂全盤負責,就是說當乙個類載入器載入個個class的時候,該class所依賴和引用的其他class也將由該類載入 器負責載入,除非使用另外乙個類載入器來載入。2.雙親委託 所謂雙親委託則是先讓parent 父 類載入器試圖載入該class 若父載...

Spring設計及原始碼分析

最近這幾天在看spring的設計與原始碼,又是把自己折磨的死去活來的。但是這麼經典的東西總是要好好體會吧,畢竟機會不多。寫一點自己的思考和感觸吧 問題1 ioc和di到底有什麼區別?之前一直認為是同乙個東西,就是從不同的角度來看的,所以有了不同的名稱 主要是從李剛的那本書上看到所理解的 但是最近去官...

LinkedHashMap原始碼分析及實現LRU演算法

ps 要先了解hashmap的實現原理hashmap原始碼分析 可以看到linkedhashmap繼承了hashmap,其實際是在hashmap基礎上,把資料節點連成乙個雙向鍊錶,遍歷的時候按鍊錶順序遍歷。小總結預設的linkedhashmap 的遍歷會按照插入的順序遍歷出來,hashmap則不保證...