Java有5种创建对象的方式,下面我用这个Employee类创建对象: package com.example.string.Object; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.Constructor; public class ObjectCreation { /** * @param args * @throws ClassNotFoundException * @throws IllegalAccessException * @throws InstantiationException */ public static void main(String[] args) throws Exception { Employee emp1 = new Employee(); emp1.setName("Naresh"); System.out.println(emp1 + ", hashcode :" + emp1.hashCode()); Employee emp2 = (Employee) Class.forName("com.example.string.Object.Employee").newInstance(); emp2.setName("Rishi"); System.out.println(emp2 + ", hashcode :" + emp2.hashCode()); Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance(); emp3.setName("Yogesh"); System.out.println(emp3 + ", hashcode :" + emp3.hashCode()); Employee emp4 = (Employee) emp3.clone(); emp4.setName("Atul"); System.out.println(emp4 + ", hashcode :" + emp4.hashCode()); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("data.obj")); oos.writeObject(emp4); oos.close(); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("data.obj")); Employee emp5 = (Employee) ois.readObject(); ois.close(); emp5.setName("Akash"); System.out.println(emp5 + ", hashcode :" + emp5.hashCode()); } } 2: 创建Employee类: package com.example.string.Object; import java.io.Serializable; public class Employee implements Serializable, Cloneable{ private static final long serialVersionUID = 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 int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Employee other = (Employee) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } @Override public String toString() { return "Employee [name=" + name + "]"; } @Override protected Object clone() { Object obj = null; try { obj = super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; } } 程序会输出: Employee Constructor Called... Employee [name=Naresh], hashcode :-1968815046 Employee Constructor Called... Employee [name=Rishi], hashcode :78970652 Employee Constructor Called... Employee [name=Yogesh], hashcode :-1641292792 Employee [name=Atul], hashcode :2051657 Employee [name=Akash], hashcode :63313419