面试笔记_ java创建对象的集中形式

java创建对象的集中形式

1.使用new关键字;

2.使用Class类的newInstance方法;

可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构造器创建对象;

//写法一:
Person person = (Person)Class.forName("com.atguigu.java.Person").newInstance();
//写法二:
Person person = Person.class.newInstance();

3.使用Constructor类的newInstance方法

本方法和Class类的newInstance方法很像,java.lang.relect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。

//调用无参:
 Constructor<Person> constructor = Person.class.getConstructor();
        Person person1 = constructor.newInstance();
//或者调用有参:
 Constructor<Person> constructor = Person.class.getConstructor(Integer.class, String.class, String.class, String.class, Integer.class);
        Person person = constructor.newInstance(1,"df","df","df",2);
        System.out.println(person);

4.使用clone的方式

4.1 浅克隆

4.2 深克隆

5.使用反序列化方式(克隆)

在需要被克隆的类需要实例化,添加克隆方法;

 //序列化实现深克隆,返回深克隆对象
    public Person myClone() {
        Person person = null;
        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(bos);
            oos.writeObject(this);  //序列化对象
            ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
            ObjectInputStream ois = new ObjectInputStream(bis);
            person = (Person) ois.readObject();  //反序列化对象
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return person;
    }
————————————————
版权声明:本文为CSDN博主「makersy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/makersy/article/details/90378813
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值