当前位置: 首页> 科技> 数码 > java —— 克隆对象、枚举

java —— 克隆对象、枚举

时间:2025/9/7 10:17:11来源:https://blog.csdn.net/firstgrass/article/details/139302217 浏览次数:2次

一、克隆对象

(一)在基本数据类型中,直接将对象 A 的值赋给对象 B,当更改对象 B 的时候,对象 A 的值保持不变。例如:

public static void main(String[] args)
{int a=5;int b=a;                      //将a的值赋给bb=6;                          //更改b的值System.out.println(b);        //b的值为6System.out.println(a);        //a的值仍然为5
}

(二)但是在对象引用的情况中,直接将对象 A 的值赋给对象 B,当更改对象 B 的时候,对象 A 的值也会随之改变。例如:

public class Student
{String name;	public Student(String name) {	this.name = name;                  //构造方法}public String getName() {return name;                       //get方法}public void setName(String name){this.name = name;                  //set方法}public static void main(String[] args){Student st1=new Student("Tom");Student st2=st1;st2.setName("Jerry");System.out.println(st2.getName());     //st2的name变为jerrySystem.out.println(st1.getName());	   //st1的name随之变为jerry}
}

在本案例中,由于 Student 类不是基本类型,当把 st1 赋给 st2 的时候,st1 和 st2 实际指向同一个对象 Tom,此时不论更改 st1 还是 st2 中的任何一个,另一个都会随之更改。

(三)如果在对象引用的过程中,要实现更改 B 的时候,A 的值不随之改变,就要通过克隆。

方法:

① 该对象的类要实现 cloneable 接口;

② 在该对象的类中对父类 Object 的 clone() 方法进行重写。

public class Student implements Cloneable
{String name;	public Student(String name) {	this.name = name;                  //构造方法}public String getName() {return name;                       //get方法}public void setName(String name){this.name = name;                  //set方法}public Student clone() throws CloneNotSupportedException{Student stu=(Student)super.clone();         //重写父类的clone()方法return stu;}public static void main(String[] args){Student st1=new Student("Tom");Student st2=st1.clone();st2.setName("Jerry");System.out.println(st2.getName());     //st2的name变为jerrySystem.out.println(st1.getName());	   //st1的name仍为tom}
}

在本案例中,使用 st2=st1.clone(),实质上等于 st1 和 st2 指向两个 Tom,此时不论更改其中任何一个,都不会影响另一个的值。

二、枚举

枚举实际上就是提前实例化好的对象,外部可以直接调用。并且枚举不支持在外部进行实例化创建,也就是说只有枚举的那几个常量。

public enum Week
{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday;public void run(){switch (this) {case Monday:case Tuesday:case Wednesday:case Thursday:case Friday:System.out.println("go to work");break;case Saturday:case Sunday:System.out.println("have a break");break;}}
}public class TT
{public static void main(String[] args){Week.Monday.run();Week.Sunday.run();}
}

关键字:java —— 克隆对象、枚举

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: