关于clone困惑了!

malong_01223 2008-03-28 03:57:30
class Student {
public String name ;
public Student (String name ){
this.name =name;
}
}
class Employee implements Cloneable{
public String str = new String("welcome");
public int i = 0;
public Student s = null;
public Object clone(){
Object clone=null;
try{
clone = super.clone();
}catch(Exception e){
e.printStackTrace();
}
return clone;
}
}
public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
Employee e1 = new Employee();
e1.s = new Student("leon");
Employee e2 = (Employee)e1.clone();
System.out.println(e1.str);
System.out.println(e1.i);
System.out.println(e2.str);
System.out.println(e2.i);
System.out.println(e2.s.name);
e1.str = "hello";
e1.i = 2;
e1.s = new Student("solog");
System.out.println("--------------------");
System.out.println(e1.str);
System.out.println(e1.i);
System.out.println(e2.str);
System.out.println(e2.i);
System.out.println(e2.s.name);//注释a
}

}

这样不是浅克隆么?按理说 注释a 那一段应该变化为solog,为什么还是leon呢。
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevinchj 2008-03-28
  • 打赏
  • 举报
回复
看错了……实在不好意思……
楼上满分!
还有疑问继续问。
吴冬冬 2008-03-28
  • 打赏
  • 举报
回复

Employee e1 = new Employee();
e1.s = new Student("leon");
Employee e2 = (Employee)e1.clone();
System.out.println(e1.str);
System.out.println(e1.i);
System.out.println(e2.str);
System.out.println(e2.i);
System.out.println(e2.s.name);
e1.str = "hello";
e1.i = 2;
//e1.s = new Student("solog");
e1.s.name="solog";
System.out.println("--------------------");
System.out.println(e1.str);
System.out.println(e1.i);
System.out.println(e2.str);
System.out.println(e2.i);
System.out.println(e2.s.name);//注释a

这样的结果e2.a.name就是solog了
吴冬冬 2008-03-28
  • 打赏
  • 举报
回复
因为e2克隆的只是new Student("leon")的引用
e1.s = new Student("solog");只是指向另一个对象
而e2.s仍然指向new Student("leon")这个对象
kevinchj 2008-03-28
  • 打赏
  • 举报
回复
那就不是浅拷贝了……
是深拷贝了
内容概要:本文详细阐述了工业母机技术领域中“高级结构设计工程师”这一岗位的全方位任职要求与职业发展路径,涵盖职位对标、目标企业、学历与证书要求、年龄范围、管理半径、晋升关键点、必备工作经验年限以及薪资待遇区间。重点突出该岗位对高端数控机床核心结构(如床身、主轴箱、导轨等)设计能力的要求,强调有限元分析、精度控制、热变形补偿、振动抑制等核心技术能力,并明确指出需具备项目主导经验、团队管理能力和跨部门协作经验。同时,根据不同企业类型和发展阶段,给出了清晰的年薪划分标准,体现了市场对该岗位的技术深度与综合能力的高度认可。; 适合人群:具备5年以上工业母机或高端机床结构设计经验,致力于向高级工程师、技术专家或管理岗位发展的结构设计从业者;或希望转型进入高端装备制造业的精密机械研发人员。; 使用场景及目标:①用于求职者精准定位职业发展方向,评估自身与高级岗位之间的能力差距;②辅助企业制定人才招聘标准与薪酬体系;③指导技术人员规划技能提升路径,聚焦核心技术积累与项目经验沉淀。; 阅读建议:建议结合个人职业发展阶段对照文中各项指标进行自我诊断,重点关注“晋升关键点”与“必备年限”部分,有针对性地补齐技术短板、积累主导项目经验,并注重专利成果与团队管理能力的培养,以全面提升竞争力。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧