首页 / JAVA / java – 使用泛型克隆
java – 使用泛型克隆
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用泛型克隆,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1407字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用泛型克隆](/upload/InfoBanner/zyjiaocheng/708/c7cd8b4a07d241d0946f47417ca18e4f.jpg)
曾几何时有一堂课:
public class Scope<C extends Cloneable & Comparable<C>> implements Comparable<Scope<C>>, Cloneable, Serializable {
private C starts;
private C ends;
...
@SuppressWarnings("unchecked")
@Override
public Object clone() {
Scope<C> scope;
try {
scope = (Scope<C>) super.clone();
scope.setStarts((C) starts.clone()); // The method clone() from the type Object is not visible
scope.setEnds((C) ends.clone()); // The method clone() from the type Object is not visible
} catch (CloneNotSupportedException e) {
throw new RuntimeException("Clone not supported");
}
return scope;
}
}
在对象中我们有:
protected native Object clone() throws CloneNotSupportedException;
而Cloneable接口是:
public interface Cloneable {
}
我应该如何克隆这个?
解决方法:
我认为目前的绿色答案很糟糕,为什么你会问?
>它添加了很多代码
>它要求您列出要复制的所有字段并执行此操作
>使用clone()时,这不适用于列表
(这就是HashMap的clone()所说的:返回这个HashMap实例的浅表副本:键和值本身没有被克隆.)所以你最终手动完成它(这让我哭)
哦顺便说一下序列化也很糟糕,你可能不得不在整个地方添加Serializable(这也让我哭).
那么解决方案是什么:
Java深度克隆库
克隆库是一个小型的开源(apache许可证)java库,它深入克隆对象.对象不必实现Cloneable接口.实际上,这个库可以克隆任何java对象.如果您不希望修改缓存对象或者只是想要创建对象的深层副本,则可以在缓存实现中使用它.
Cloner cloner=new Cloner();
XX clone = cloner.deepClone(someObjectOfTypeXX);
请在http://code.google.com/p/cloning/查看
内容总结
以上是互联网集市为您收集整理的java – 使用泛型克隆全部内容,希望文章能够帮你解决java – 使用泛型克隆所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。