gpt4 book ai didi

java - Java 中泛型的深拷贝

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:14 26 4
gpt4 key购买 nike

泛型类型 T, E 的深拷贝(克隆)在 Java 中如何工作?可能吗?

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

最佳答案

答案是否定的。因为没有办法在编译期间找出哪个类将替换您的通用类型 E,除非您 Bind it to a type .

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();
}
}

关于java - Java 中泛型的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16436591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com