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