1、Java中建立(實例化)對象的五種方式 java
一、用new語句直接建立對象,這是最多見的建立對象的方法。ide
二、經過工廠方法返回對象,如:String str = String.valueOf(23); 測試
三、運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。如:Object obj = Class.forName("java.lang.Object").newInstance(); ui
四、調用對象的clone()方法。this
五、經過I/O流(包括反序列化),如運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。對象
二.實例說明:get
建立 Fruit(水果)實體類 hash
package com.shine.demo.object; import java.io.Serializable; @SuppressWarnings("serial") public class Fruit implements Serializable, Comparable<Fruit>{ /** * id. */ private Long id; /** * 名稱. */ private String name; /** * 價格. */ private Double price; public Fruit() { super(); } public Fruit(Long id, String name, Double price) { super(); this.id = id; this.name = name; this.price = price; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } @Override public String toString() { return "id爲:" + this.getId() + ",的:"+ this.getName() +"的價格爲:"+this.getPrice(); } @Override public int compareTo(Fruit otherFruit) { if(!(this.id.equals(otherFruit.id))) return this.id.compareTo(otherFruit.id); else if(!(this.name.equals(otherFruit.name))) return this.name.compareTo(otherFruit.name); else if(this.price.equals(otherFruit.price)) return this.price.compareTo(otherFruit.price); return 0; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((price == null) ? 0 : price.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Fruit)) return false; Fruit other = (Fruit) obj; return this.id.equals(other.id) && this.name.equals(other.name) && this.price.equals(other.price); } } it
測試說明 : 下面主要對1/3方式進行說明io
package com.shine.demo.object; public class ObjOpen { public static void main(String[] args) { /**方法一 : new語句直接建立對象 */ Fruit fruit = new Fruit(1L,"蘋果",4.3); System.out.println(fruit.toString()); /**方法三 :運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。 * 如:Object obj = Class.forName("java.lang.Object").newInstance(); **/ try { Fruit fruit2 = (Fruit) Class.forName("com.shine.demo.object.Fruit").newInstance(); fruit2.setId(2L); fruit2.setName("香蕉"); fruit2.setPrice(2.6); System.out.println(fruit2); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
3、結果: