[英]can cglib(java) deep copy a bean that has a list property
這是代碼
public class Root {
private Long id;
private List<Child> list;
//getter and setter
}
public class Child {
private Long id;
//getter and setter
}
public static void main(String args) {
Child child = new Child();
child.setId(1L);
List<Child> list = new ArrayList<>();
list.add(child);
Root root = new Root();
Root copyRoot = new Root();
root.setId(2L);
root.setList(list);
BeanCopier copier1 = BeanCopier.create(Root.class, Root.class, false);
copier1.copy(root, copyRoot, null);
//can beancopier in cglib deep copy this root to copyRoot?
//because i found when i used beancopier the two instances still point the same list instance
}
可以在cglib中beancopier深度復制這個root到copyRoot嗎? 因為我發現當我使用beancopier時,兩個實例仍然指向相同的列表實例
cglib可以使用代碼生成來改進復制的方式是創建一個子類,該類是提供的類的子類。 cglib需要為每個嵌套類型執行此操作,而無法知道為每個字段分配了哪個子類實例,因此,這不起作用。
一般來說,我建議您不要依賴代碼生成來執行此任務; 在JVM還很年輕的時候,這才真正提供了性能優勢。 現代虛擬機使用反射同樣表現良好,例如Apache的bean。
但是,創建自動深層副本可能不是一個好主意,但您可能會查看相應的實用程序 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.