Java创建对象的方法(5种) |
您所在的位置:网站首页 › 创建模块对象名称为mk11 › Java创建对象的方法(5种) |
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 |