JAVA基础知识重构——对象创建方式

对象的创建方式

一、new对象

详情

二、反射

1、首先获取class对象:
1)类名.class
2)对象名.getclass()
3)Class.forName(“全限定名”)

1.1、通过class对象调用无参构造方法创建对象:
1)class对象名.newInstance()

1.2、通过class对象调用有参构造方法创建对象:
1)class对象名.getDeclaredConstructors(),返回所有构造方法类Constructor组成的数组

2)class对象名.getDeclaredConstructors(参数列表数据类型),返回指定Constructor类

三、克隆对象

1、克隆的内容:
1)基本数据类型:使用值传递
2)引用数据类型:使用引用传递

2、克隆的方式:
2.1、浅克隆:
(1)原理:
对象的基本数据类型的字段,全部赋值到克隆对象中;
对象的引用数据类型的字段,只是引用地址,原对象和克隆对象指向同一个引用;

(2)实现:
将原对象的类实现Cloneable接口,然后重写clone()方法;
注意:clone()方法属于Object类,Cloneable接口没有定义任何方法
(3)效果:
当原对象的引用数据类型字段改变时,克隆对象对应的字段有相应的改变;

2.2、深克隆:
(1)原理
对象的基本数据类型的字段,全部复制到克隆对象中;
对象的引用数据类型的字段,会复制一份,然后克隆对象指向该引用,原对象和克隆对象分别指向各自的引用;

(2)实现
原对象的引用类型字段的类实现Cloneable接口,重写clone()方法;
原对象本身同样实现Cloneable接口,重写clone()方法,并在重写过程中调用引用类型字段的clone()方法,克隆引用类型字段;

(3)效果
原对象和克隆对象的引用数据类型字段相互独立;

四、反序列化对象

1、认识序列化和反序列化
1)序列化:把Java对象转换成字节序列,方便持久化到硬盘中
2)反序列化:将字节序列恢复为Java对象

2、实现序列化和反序列化
(1)前提:需要序列化的对象必须实现Serializable接口,该接口没有定义任何方法;

2.1、实现序列化
1)字节流;将Java对象封装成ObjectOutputStream,可使用OutputStream相关的IO流;
2)调用writeObject(),写入指定的文件中;

2.2、实现反序列化
1)将序列化的文件封装成ObjectInputStream,可使用InputStream相关的IO流;
2)调用readObject(),返回原Java对象;

3、控制序列化过程
3.1、serialVersionUID进行版本控制
1)作用:对已经序列化的对象,可通过serialVersionUID判断后面是否再次修改过,保证反序列化后的对象的正确性;
2)用法:不显式给类加上,则默认生成一个;建议显式加上;
3)规则:实现Serializable接口的类,每次修改后,该UID都会改变;

3.2、transient控制不想序列化的属性字段
1)作用:对于不想序列化的字段,如私密属性,则可以在字段前使用transient进行修饰;
2)效果:在字段反序列化后,引用数据类型的字段值为null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值