Java泛型小记

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

 程序运行结果为:

Iphone
XiaoMi
HuaWei
Vivo
Oneplus

 

posted @ 2017-02-10 20:54  zni.feng  阅读(308)  评论(1编辑  收藏  举报