打字猴:1.700441818e+09
1700441818 编写高质量代码:改善Java程序的151个建议 [:1700438112]
1700441819 编写高质量代码:改善Java程序的151个建议 建议43:避免对象的浅拷贝
1700441820
1700441821 我们知道一个类实现了Cloneable接口就表示它具备了被拷贝的能力,如果再覆写clone()方法就会完全具备拷贝能力。拷贝是在内存中进行的,所以在性能方面比直接通过new生成对象要快很多,特别是在大对象的生成上,这会使性能的提升非常显著。但是对象拷贝也有一个比较容易忽略的问题:浅拷贝(Shadow Clone,也叫做影子拷贝)存在对象属性拷贝不彻底的问题。我们来看这样一段代码:
1700441822
1700441823 public class Client{
1700441824
1700441825 public static void main(String[]args){
1700441826
1700441827 //定义父亲
1700441828
1700441829 Person f=new Person(“父亲”);
1700441830
1700441831 //定义大儿子
1700441832
1700441833 Person s1=new Person(“大儿子”,f);
1700441834
1700441835 //小儿子的信息是通过大儿子拷贝过来的
1700441836
1700441837 Person s2=s1.clone();
1700441838
1700441839 s2.setName(“小儿子”);
1700441840
1700441841 System.out.println(s1.getName()+“的父亲是”+s1.getFather().getName());
1700441842
1700441843 System.out.println(s2.getName()+“的父亲是”+s2.getFather().getName());
1700441844
1700441845 }
1700441846
1700441847 }
1700441848
1700441849 class Person implements Cloneable{
1700441850
1700441851 //姓名
1700441852
1700441853 private String name;
1700441854
1700441855 //父亲
1700441856
1700441857 private Person father;
1700441858
1700441859 public Person(String_name){
1700441860
1700441861 name=_name;
1700441862
1700441863 }
1700441864
1700441865 public Person(String_name, Person_parent){
1700441866
1700441867 name=_name;
[ 上一页 ]  [ :1.700441818e+09 ]  [ 下一页 ]