在日常学习中遇到的一些知识点记录一下,并分享给大家。本人是一名小白,第一次写文章,如果各位大佬看见的时候,帮忙指出问题,看到会立即更改。
一、几种方式
1.通过new申请对象空间(执行构造方法)
new申请空间然后加载对象,加载了之后在去执行构造方法,在返回产生空间的引用地址
2.通过Class类中newInstance()
先获取当前类对应的运行时类,通过这个类直接newInstance就可以得到对象了
3.通过Constructor类中的newInstance()方法
先获取当前类对应的运行时类,通过运行时类,获取当前某一个构造方法,(找有参、无参构造,找不到就报异常)
以上三种基本都会执行构造方法
4.通过Object类中的clone()方法
Object下的一个重要的方法(理解太浅,不过多说明)
5.通过对象的反序列化
将本地文件中 拆分的有序的字节序列 转化 为一个完整的对象的过程(重新组成堆栈过程)
没有调用构造方法,就是将对象信息读取出来的过程
二、代码片段
1.仅供参考
//1.通过new申请对象空间(堆内存) Person person = new Person(); //2.通过Class类中的newInstance()方法 Class clazz = Person.class; Person p = (Person) clazz.newInstance(); //3.通过Constructor类中的newInstance()方法 Class claqq = Person.class; Constructor con = claqq.getConstructor(String.class); Person per = (Person) con.newInstance("zzt"); //4.通过Object类中的clone()方法 //类对象,实现实现Cloneable接口 //不会执行构造方法 //设计模式 ------>Prototype原型模式 //5.通过对象的反序列化 FileInputStream fileInputStream = new FileInputStream("path"); ObjectInputStream ois = new ObjectInputStream(fileInputStream); Person person1 = (Person) ois.readObject();