Java创建对象的方法(5种)

您所在的位置:网站首页 创建模块对象名称为mk11 Java创建对象的方法(5种)

Java创建对象的方法(5种)

2024-07-01 08:10| 来源: 网络整理| 查看: 265

ava有5种方式来创建对象:

使用 new 关键字(最常用):

        ObjectName obj = new ObjectName();

使用反射的Class类的newInstance()方法:

        ObjectName obj = ObjectName.class.newInstance();

使用反射的Constructor类的newInstance()方法:

        ObjectName obj = ObjectName.class.getConstructor.newInstance();

使用对象克隆clone()方法:

        ObjectName obj = obj.clone();

使用反序列化(ObjectInputStream)的readObject()方法:

        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME))) {

            ObjectName obj = ois.readObject();

        }

示例  创建类   package object; import java.io.Serializable; import java.util.Objects; public class Employee implements Serializable, Cloneable { private static final long serializableUID = 1L; private String name; public Employee() { System.out.println("Employee Constructor Called..."); } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public Employee clone() { Employee clone = null; try { clone = (Employee) super.clone(); } catch (CloneNotSupportedException e) { } return clone; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Employee employee = (Employee) o; return Objects.equals(name, employee.name); } @Override public int hashCode() { return Objects.hash(name); } @Override public String toString() { return "Employee{" + "name='" + name + '\'' + '}'; } } 创建类对象   package object; import java.io.*; import java.lang.reflect.Constructor; public class ObjectCreate { private static final String FILE_NAME = "employee.obj"; public static void main(String[] args) throws Exception { // 使用 new关键字 创建对象 Employee employee = new Employee(); employee.setName("张三"); // 使用 Class类的 newInstance()方法 // Employee employee2 = (Employee) Class.forName("Employee").newInstance(); Employee employee2 = Employee.class.newInstance(); employee2.setName("xxx2"); System.out.println("Class类的newInstance()方法:" + employee2); // 使用 Constructor类的newInstance()方法 Employee employee3 = Employee.class.getConstructor().newInstance(); employee3.setName("xxx3"); System.out.println("Constructor类的newInstance()方法:" + employee3); // 使用 clone()方法:类必须实现Cloneable接口,并重写其clone()方法 Employee employee4 = (Employee) employee.clone(); // employee4.setName("xxx4"); System.out.println("对象clone()方法:" + employee4); // 使用 反序列化ObjectInputStream 的readObject()方法:类必须实现 Serializable接口 // 序列化 try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_NAME))) { oos.writeObject(employee); } // 反序列化 try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME))) { Employee employee5 = (Employee) ois.readObject(); System.out.println("反序列化:" + employee5); } } }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3