JAVA创建对象的几种方式实现

/**
 * 用于创建Java的对象
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysUser implements Serializable,Cloneable {
    private Integer id=1;
    private String uname="hzyao";

    public static void CloneObject() {
        SysUser sysUser3 = new SysUser(5,"clone");
        try {
            SysUser sysUser5 = (SysUser) sysUser3.clone();
            System.out.println(sysUser5.getId()+" _5_ "+sysUser5.getUname());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }

}

测试方法:

import java.io.*;
import java.lang.reflect.Constructor;

/**
 * 创建JAVA对象的几种方式测试
 */
public class Test {

    public static void main(String[] args) {
        //1.new方式创建
        SysUser sysUser = new SysUser(1001,"hzyao");
        System.out.println(sysUser.getId()+" _1_"+sysUser.getUname());
        //2.使用Class类的newInstance()方法
        String forName = "com.yao.objectCreated.SysUser";
        //3、使用Constructor.newInstance()方法
        Constructor<SysUser> sysUserConstructor;
        try {
            Class clz = Class.forName(forName);
            SysUser sysUser1 = (SysUser) clz.newInstance();
            System.out.println(sysUser1.getId()+" _2_"+sysUser1.getUname());
            sysUserConstructor = SysUser.class.getConstructor();
            SysUser sysUser2 = sysUserConstructor.newInstance();
            System.out.println(sysUser2.getId()+" _3_"+sysUser2.getUname());
            //4.反序列号
            Serializable();
            //5.使用对象克隆创建新的对象
            SysUser.CloneObject();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void Serializable() {
        String filePath = "user.txt";
        SysUser sysUser = new SysUser(4,"反序列化创建Object");

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(filePath);
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
            objectOutputStream.writeObject(sysUser);
            objectOutputStream.flush();
            objectOutputStream.close();

            FileInputStream fileInputStream = new FileInputStream(filePath);
            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
            SysUser sysUser1 = (SysUser) objectInputStream.readObject();
            objectInputStream.close();
            System.out.println(sysUser1.getId()+" _4_ "+sysUser1.getUname());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

结果:

1001 _1_hzyao
1 _2_hzyao
------------------------
1 _3_hzyao
4 _4_ 反序列化创建Object
5 _5_ clone
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5210丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值