java 创建对象的几种方式

本文探讨了Java中对象创建的多种方式,包括new关键字、反射的Class.newInstance和Constructor.newInstance,Clone的使用,以及序列化与反序列化的概念。重点讲解了它们的区别与应用场景,适合进阶开发者阅读。
摘要由CSDN通过智能技术生成

1、new

        //1、 new创建
        User user = new User();

2、反射

a.使用Class类的newInstance方法

        //Class.forName--通过类的全路径,获取类的实例,
        Class class2= null;
        try {
            //2.1 使用Class类的newInstance方法
            //Class<User> class1= User.class; 可以直接通过类名反射,也可以通过类路径 
            class2 = Class.forName("com.chengang.demo.demo.User");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            // 最终也是通过Class的newInstance
            User u3 = (User)class2.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        扩展一下获取对象的三种方式:

        通过类名获取 类名.class

        通过对象获取 对象名.getClass()

        通过全类名获取 class.forName()

b.使用Constructor类的newInstance方法

        //2.2 通过构造器Constructor  newInstance
        Constructor<User> constructor = null;
        try {
            constructor = User.class.getConstructor();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        try {
            User stu = constructor.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

对比:

事实上Class的newInstance方法内部调用Constructor的newInstance方法。这也是众多框架Spring、Hibernate、Struts等使用后者的原因。

3、使用Clone的方法

无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用clone方法创建对象并不会调用任何构造函数。要使用clone方法,我们必须先实现Cloneable接口并实现其定义的clone方法

4、使用反序列化

首先介绍一下序列化的含义直接上链接:

Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释_菜的抠脚的博客-CSDN博客_序列化的作用

序列化和反序列化的概念

序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

想要序列化需要实现Serializable 接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值