1.cglib
BeanGenerator beanGenerator = new BeanGenerator(); beanGenerator.addProperty("id", Long.class); beanGenerator.addProperty("username", String.class); Object obj = beanGenerator.create(); BeanMap beanMap = BeanMap.create(obj); BeanCopier copier = BeanCopier.create(User.class, obj.getClass(), false); User user = new User(); user.setId(1L); user.setUsername("name1"); user.setPassword("123"); copier.copy(user, obj, null); System.out.println(beanMap.get("username"));Class clazz = obj.getClass(); Method[] methods = clazz.getDeclaredMethods();for (int i = 0; i < methods.length; i++) { System.out.println(methods[i].getName()); } 输出结果: name1 getId getUsername setId setUsername
從輸出結果可以看出最後產生的obj只有id和username兩個屬性
2.org.apache.commons.beanutils
DynaProperty property = new DynaPropert
之間的關係
DynaBean的源碼
DynaProperty property = new DynaProperty("id", Long.class); DynaProperty property1 = new DynaProperty("username", String.class); BasicDynaClass basicDynaClass = new BasicDynaClass("user", null, new DynaProperty[]{property, property1}); BasicDynaBean basicDynaBean = new BasicDynaBean(basicDynaClass); User user = new User(); user.setId(1L); user.setUsername("name1"); user.setPassword("123"); BeanUtils.copyProperties(basicDynaBean, user);Map<String, Object> map = basicDynaBean.getMap(); Iterator<String> it = map.keySet().iterator();while (it.hasNext()) { String key = it.next(); System.out.println(key + ":" + map.get(key)); } 输入结果: id:1username:name1
主要是介面的定義
再來看看BasicDynaBean是怎麼實現的,直接看public Object get(String name);
reeereee
從以上是在values裡取值的public interface DynaBean { public boolean contains(String name, String key); public Object get(String name); public Object get(String name, int index); public Object get(String name, String key); public DynaClass getDynaClass(); public void remove(String name, String key); public void set(String name, Object value); public void set(String name, int index, Object value); public void set(String name, String key, Object value); }其實是用HashMap來實現的.3.總結用cglib動態刪除添加屬性時,雖然obj裡有getUsername這個方法,卻不能obj.getUsername()這樣直接呼叫,想得到username的值只能透過beanMap.get("username")取得.org.apache.commons.beanutils從源碼來看是使用HashMap來實現的.使用Map的區別不大.只是它們都提供了複製屬性的工具方法.
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
2 週前ByDDD
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器