泛型,你惊到了我

泛型类

代码实例:

public class Teacher<T> {

    private T t;


    public Teacher(T t){
        this.t = t;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

}

在上面,我们定义了泛型类,接下来创建泛型类,从中说明我对泛型的惊讶。

首先有这样的一个代码实例,当然,也是我在创建Teacher类的时候,产生的疑惑。

Teacher<Integer> teacher = new Teacher("s");

Integer i = teacher.setT("s");

 

不知道看到这段代码的人能不能直接给出一个答案了?也就是这段代码会不会出现编译期错误,如果会,那么哪一行出现编译器错误。

可能看到我文章的毕竟在少数,但我希望各位可以给出我一个答案,当然,如果可以说明原因,那就更好不过了。

public class Pair<T> {

    private T t;

    public Pair(T t) {
        this.t = t;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    public void print(Pair<? extends Teacher> pairx){
        Teacher teacher = pairx.getT();
        System.out.println(teacher.getT());
    }


    public static void main(String[] args) {
        Pair pair = new Pair(1);
        Teacher teacher = new Teacher(1);
        TeacherToStudent teacherToStudent = new TeacherToStudent(1);
        pair.print(new Pair<>(teacher));
        pair.print(new Pair<>("w"));
    }
}

对于上述代码,同样有一个疑惑,就其print方法而已,其参数为Pair<? extends Teacher>,但是在编写main方法时,

对于pair.print(new Pair<>("w"))方法的调用并不会报错,仅仅在运行期出现类转换异常,那Pair<? extends Teacher>的限定到底是限定了什么??好疑惑。

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值