[英]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.