码迷,mamicode.com
首页 > 编程语言 > 详细

Java泛型小记

时间:2017-02-10 22:12:02      阅读:216      评论:0      收藏:0      [点我收藏+]

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

 程序运行结果为:

Iphone
XiaoMi
HuaWei
Vivo
Oneplus

 

Java泛型小记

标签:this   ati   stat   使用   对象   变更   对象类型   oid   编译   

原文地址:http://www.cnblogs.com/znicy/p/6376120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!