Java中泛型类型的深层副本

前端之家收集整理的这篇文章主要介绍了Java中泛型类型的深层副本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
泛型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相关文章