28.java泛型?

来源:互联网 发布:ubuntu wineqq 编辑:程序博客网 时间:2024/04/28 18:31
public class Test {    private Integer a;    public Test(Integer a) {        super();        this.a = a;    }    public Integer getA() {        return a;    }    public void setA(Integer a) {        this.a = a;    }    public  void print() {        System.out.println("a的类型:"+ a.getClass().getName());    }}
public class Test2 {    private String a;    public Test2(String a) {        super();        this.a = a;    }    public String getA() {        return a;    }    public void setA(String a) {        this.a = a;    }    public  void print() {        System.out.println("a的类型:"+ a.getClass().getName());            }}

这里写图片描述


向上转型有疑问
将代码一致性改为jre1.5后编译成功


泛型

/** * 定义泛型类 * 使用泛型可以指代任意对象类型 * @author Gavin * * @param <T> */public class CC<T> {    private T ob;    public CC(T ob) {        super();        this.ob = ob;    }    public T getOb() {        return ob;    }    public void setOb(T ob) {        this.ob = ob;    }    /**     * 打印T的类型     */    public void print() {        System.out.println("T的实际类型:"+ob.getClass().getName());    }}
public class TestTest {    public static void main(String[] args) {        CC<Integer> cc = new CC<Integer>(1);        cc.print();        int icc = cc.getOb();        System.out.println(icc);        CC<String> cc2 = new CC<String>("我是String");        cc2.print();        String scc = cc2.getOb();        System.out.println(scc);    }}T的实际类型:java.lang.Integer1T的实际类型:java.lang.String我是String

限制泛型

//对泛型类进行限制,比如只能是Animal类或者它的子类public class CC<T extends Animal> {    private T ob;    public CC(T ob) {        super();        this.ob = ob;    }    public T getOb() {        return ob;    }    public void setOb(T ob) {        this.ob = ob;    }
CC<Dog> cc = new CC<Dog>(new Dog());

通配符泛型、泛型方法未细看

0 0
原创粉丝点击