Deep copy of generic types in Java
•
Java
How do deep copies (clones) of generic T, e work in Java? Is it possible?
E oldItem; E newItem = olditem.clone(); // does not work
Solution
The answer is No Because it is impossible to find out which class will replace your generic type E during compilation, unless you are bind it to a type
The cloning method of Java is very shallow. For deep cloning, we need to provide our own implementation
Its solution is to create such contracts
public interface DeepCloneable { Object deepClone(); }
And implementers should have their own deep cloning logic
class YourDeepCloneClass implements DeepCloneable { @Override public Object deepClone() { // logic to do deep-clone return new YourDeepCloneClass(); } }
It can be called as follows, where generic type E is a bounded type
class Test<E extends DeepCloneable> { public void testDeepClone(E arg) { E e = (E) arg.deepClone(); } }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码