java创建对象的几种方式

public class Person implements Cloneable, Serializable {
    public void hello(){
        System.out.println("hello world");
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, CloneNotSupportedException, IOException {
        /*1普通方法*/
        Person person = new Person();
        person.hello();
        /*2反射 使用Class类的newInstance方法*/
        Class aclass = Class.forName("zixue.Person");
        Person person1 = (Person) aclass.newInstance();
        person1.hello();
        /*3反射 使用Constructor类的newInstance方法*/
        Class bclass = Class.forName("zixue.Person");
        Constructor constructor = bclass.getConstructor();
        Person person2 = (Person) constructor.newInstance();
        person2.hello();
        /*4clone   要实现Cloneable接口  重写clone方法*/
        Person person3 = (Person) person.clone();
        person3.hello();
        /*5反序列化  实现Serializable接口*/
        Person person4 = new Person();
        //准备一个文件用于存储该对象的信息
        File f = new File("person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f));
        //序列化对象,写入到磁盘中
        oos.writeObject(person4);
        //反序列化对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f));
        Person person5 = (Person)ois.readObject();
        person5.hello();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值