Java创建对象的方式

一、使用new关键字

        通过new 类名()调用类的构造方法来创建类的对象,是开发中最常用的方式,直接调用,可控性强。

        示例代码:创建Person类

        通过new关键字创建Person类的实例对象

        运行结果:

二、使用反射机制,通过class类的getDeclaredConstrustor().newInstance()方法

        利用 Java 反射机制,通过类的 Class 对象调用newInstance()方法创建对象(JDK9 后标记为过时,推荐用getDeclaredConstructor().newInstance())。

        特点:

        Ⅰ.动态创建对象,适合框架开发(如spring)

        Ⅱ.需要处理异常,且必须保证类有可访问的构造方法。

        示例代码:

        运行结果:

三、使用反射机制,通过Constructor类的newInstance()方法

        相较于Class.newInstance()方法,该方法支持调用私有构造方法,更加灵活

        特点:

        Ⅰ.可以指定调用任意构造方法(包括有参、私有)

        Ⅱ.反射相关的方式都存在一定的性能开销,非必要不滥用

        示例代码:

        运行结果:

四、使用克隆机制

        1、浅度克隆
        克隆基本数据类型,但不会克隆引用数据类型,二者是共享一个引用数据类型的变量

        示例代码:

        创建Manager类

        创建Employee类

        在main函数中进行测试:

        运行结果:

        2、深度克隆
        既会克隆基本数据类型,也会克隆引用数据类型。

        示例代码:

        创建Manager类

        创建Employee类

        在main函数中测试:

        运行结果:

五、通过反序列化

        将序列化的对象字节流恢复为对象,要求类实现Serializable接口

        示例代码:

        修改Person类,继承 Serializable接口

        通过反序列化创建对象

        运行结果:

六、使用工厂模式

        在工厂模式中,创建对象

        示例代码:场景有两个汽车工厂可以生产汽车:A工厂和B工厂

        1、创建生产汽车的接口

        2、创建类FactoryA

        3、创建类FactoryB

        4、创建工厂类ProduceFactory

        5、测试工厂模式

        运行结果:

总结:

        以上就是本次介绍的6中创建对象的方式,下面总结一下这几种方式的使用到的关键字和适用场景

对象的创建方式

使用的关键字

是否调用构造函数

适用场景

new 关键字

new ClassName()

常规业务场景、明确知道类名的场景

克隆

Object.clone ()、继承Cloneable 接口

快速复制对象(如原型模式)

反射

getDeclaredConstructor().newInstance() (JDK9+);Constructor类的newInstance()

框架开发(如 Spring)、动态代理

反序列化

实现Serializable接口

网络传输、持久化(如文件 / 数据库)

工厂模式

在工厂内部自定义

复杂对象创建、多产品族场景


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值