Java 中创建对象的5种方式

来源:互联网 发布:yy踢人软件 编辑:程序博客网 时间:2024/06/05 05:54

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<Employee> 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;}@Overridepublic int hashCode() {    final int prime = 31;    int result = 1;    result = prime * result + ((name == null) ? 0 : name.hashCode());    return result;}@Overridepublic 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;}@Overridepublic String toString() {    return "Employee [name=" + name + "]";}@Overrideprotected Object clone() {    Object obj = null;    try {        obj = super.clone();    } catch (CloneNotSupportedException e) {        e.printStackTrace();    }    return obj;}         }

程序会输出:

Employee Constructor Called...Employee [name=Naresh], hashcode :-1968815046Employee Constructor Called...Employee [name=Rishi], hashcode :78970652Employee Constructor Called...Employee [name=Yogesh], hashcode :-1641292792Employee [name=Atul], hashcode :2051657Employee [name=Akash], hashcode :63313419
2 1
原创粉丝点击