泛型通配符的使用

   Java 泛型支持通配符,类型有以下3类:

  1. 无限定通配符   形式<?>
  2. 上边界限定通配符 形式< ? extends SuperClass>
  3. 下边界限定通配符    形式< ? super SubClass>

那么该如何 确定该使用何种通配符呢?

如果是“读”操作 则需要限定 上边界,如果是写操作则需要限定下边界;而无限定通配符表示只读,不能进行增加、修改。

 

import java.util.List;

/**
 *
 * @author zhangwei_david
 * @version $Id: WildcardDemo.java, v 0.1 2014年10月19日 下午6:38:25 zhangwei_david Exp $
 */
public class WildcardDemo {

    public static <E> void readError(List<? super E> list) {
        for (Object object : list) {

        }
    }

    public static <E> void read(List<? extends E> list) {
        for (E e : list) {

        }
    }

    public static <E> void write(List<? super Number> list) {
        list.add(1);
    }
    
    public static <E> void write(List<? extends Number> list){
        list.add(1);
    }

}

 我们可以发现

 public static <E> void write(List<? extends Number> list){
        list.add(1);
    }根本就不能通过编译。
 public static <E> void readError(List<? super E> list) {
        for (Object object : list) {

        }
    }也无法起到参数类型限定的作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值