您的位置 首页 java

Java,实例化对象,四种方式,new关键字、clone、反射、反序列化

前言

一般情况下,常用的创建对象的方式有四种:

1、使用new关键字创建对象。

2、使用clone()方法创建关键字,需实现 Java .io.Cloneable接口。

3、使用反射方式创建对象,参考之前内容, 。

4、使用 序列化 ,再反序列化的方式,创建对象。

序列化&反序列化

序列化:将对象状态转化为可保持或传输的格式的过程,被序列化的对象必须实现java.io. Serializable接口 ;反序列化:将保持或传输的格式的内容转化成对象的过程。

代码案例

 package com.what21.basic01.demo04;

import lombok.AllArgs Constructor ;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.*;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements  Serializable , Cloneable {

     private  Integer id;

    private String name;

    private Date createTime;

    public User clone() {
        User user = null;
        try {
            user = (User) super.clone();
        } catch (CloneNotSupported Exception  e) {
            e.printStackTrace();
        }
        return user;
    }

    public User deep copy () {
        User copyUser = null;
        try {
            String  File name = System.getProperty("java.io.tmpdir");
            filename = filename + "/javaTemp";
            File file = new File(filename);
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
            out.writeObject(this);
            out.close();
            ObjectInputStream in = new Object InputStream (new FileInputStream(file));
            copyUser = (User) in.readObject();
            in.close();
            if (file. exists ()) {
                file.deleteOnExit();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return copyUser;
    }

}  
 package com.what21.basic01.demo04;

import java.util.Date;

public class CreateInstanceDemo {

    public  static   void  main(String[] args) {
        // Java实例化对象的方式
        // 1、使用关键字 new()创建对象,经常用
        User user = new User(1, "张三", new Date());
        System.out.println("创建对象方式1:" + user + " hashCode " + user.hashCode());
        // 2、用clone方法创建
        User user2 = (User) user.clone();
        System.out.println("创建对象方式2:" + user2 + " hashCode " + user2.hashCode());
        // 3、反射创建
        User user3 = null;
        try {
            Class clazz = Class.forName("com.what21.basic01.demo04.User");
            user3 = (User) clazz.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("创建对象方式3:" + user3 + " hashCode " + user3.hashCode());

        // 4、深度克隆
        User user4 = (User) user.deepCopy();
        System.out.println("创建对象方式4:" + user4 + " hashCode " + user4.hashCode());

    }

}
  

文章来源:智云一二三科技

文章标题:Java,实例化对象,四种方式,new关键字、clone、反射、反序列化

文章地址:https://www.zhihuclub.com/194568.shtml

关于作者: 智云科技

热门文章

网站地图