java實例化對象的方式


一、Java中創建(實例化)對象的五種方式
  1、用new語句直接創建對象,這是最常見的創建對象的方法。

  2、通過工廠方法返回對象,如:String str = String.valueOf(23); 

  3、運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。如:Object obj = Class.forName("java.lang.Object").newInstance(); 

  4、調用對象的clone()方法。

  5、通過I/O流(包括反序列化),如運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。

二.實例說明:

 創建 Fruit(水果)實體類 

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);
	}
	

}

測試說明 : 下面主要對1/3方式進行說明

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();
		}
		
	}

}

三、結果:  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM