簡體   English   中英

Java中泛型類型的深層副本

[英]Deep Copy of a Generic Type in Java

泛型T, E深拷貝(克隆)如何在Java中工作? 可能嗎?

E oldItem;
E newItem = olditem.clone(); // does not work

答案是不。 因為在編譯期間無法找出哪個類將替換您的泛型類型E ,除非您將其綁定到類型

Java的克隆方式很淺,對於深度克隆,我們需要提供自己的實現

它的解決方法是創建這樣的合同

public interface DeepCloneable {
    Object deepClone();
}

並且實現者應該擁有自己的深度克隆邏輯

class YourDeepCloneClass implements DeepCloneable {

    @Override
    public Object deepClone() {
        // logic to do deep-clone
        return new YourDeepCloneClass();
    }

}

它可以像下面那樣調用,其中泛型類型E是有界類型

class Test<E extends DeepCloneable> {

    public void testDeepClone(E arg) {
        E e = (E) arg.deepClone();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM