集合框架-泛型-通配符?及约束条件

可以用extends来约束等于某个类及其子类,或者用super来约束等于某个类及其父类

package com.fanxing;
public class Abc<T> { //定义泛型类
    private T x;            
    public T getX() {
        return null;
    }
    public void setX(T x) {
    }
}
public class Ey {
    //public  Abc<? > cf(Abc <? extends Yzr> k){  可以extends亚洲人,赋值的类型必须是亚洲人或者其子类
    public  Abc<? > cf(Abc <? super Zgr> k){ //也可以super中国人,赋值的类型必须是中国人或者其父类
        return null;
    };
}
public class Test {
    public static void main(String[] args) {
        Ey ey=new Ey();
        ey.cf(new Abc<Zgr>());
    }
}

注意:
1)一般定义的泛型类型首次使用的时候如果还是不确定用什么类型,可以用通配符?代替,但是再次调用的时候必须赋具体的类型了 也就是说通配符?只能用一次。

2)(这时候如果不用?来表示不确定类型 如果还是用之前定义的T 那么这里会被当做一个实体类T类型处理,会要求创建class T的类)。

3)通配符?在泛型定义时不能使用,只能用在泛型使用的时候用。

//定义泛型的时候也可以用extends约束 如下:
//但定义泛型时不能用super约束
public class Abc<T extends Zgr> { //可以同时写多个类型变量
    private T x;            //使用时不用区分顺序
    public T getX() {
        return null;
    }
    public void setX(T x) {
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值