標籤:this ati stat 使用 對象 變更 物件類型 oid 編譯
Automobile類:
public class Automobile { private String name; public Automobile(String name){ this.name= name; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
Holder1類:持有指定的單一類型對象。
public class Holder1 { private Automobile automobile; public Holder1(Automobile automobile){ this.automobile = automobile; } public Automobile get(){ return this.automobile; }}
Holder2類:持有Object對象。
public class Holder2 { private Object object; public Holder2(Object object){ this.setObject(object); } public Object getObject() { return object; } public void setObject(Object object) { this.object = object; }}
Holder3類:使用泛型,持有單一對象,但是暫時不指定其類型,到使用時決定持有何種對象。
public class Holder3 <T>{ private T t; public Holder3(T t){ this.setT(t); } public T getT() { return t; } public void setT(T t) { this.t = t; }}
主程式Main:
public class Main { public static void main(String[] args) { /*使用Holder1*/ Holder1 holder1 = new Holder1(new Automobile("Iphone")); System.out.println(holder1.get().getName()); /*使用Holder2*/ //使holder2持有String類型對象 Holder2 holder2 = new Holder2("XiaoMi"); System.out.println(holder2.getObject()); //更改holder2中持有的物件類型 holder2.setObject(new Automobile("HuaWei")); //向下轉型Object->Automobile Automobile automobile = (Automobile) holder2.getObject(); System.out.println(automobile.getName()); /*使用Holder3*/ //告訴編譯器holder3持有的物件類型為String //此時holder3擁有的物件類型只能為String,不能變更 Holder3<String> holder3 = new Holder3<String>("Vivo"); System.out.println(holder3.getT()); //告訴編譯器anotherHolder3持有的物件類型為Automobile //此時anotherHolder3擁有的物件類型只能為Automobile,不能變更 Holder3<Automobile> anotherHolder3 = new Holder3<Automobile>(new Automobile("Oneplus")); System.out.println(anotherHolder3.getT().getName()); } }
程式運行結果為:
IphoneXiaoMiHuaWeiVivoOneplus
Java泛型小記