`
zhangwei_david
  • 浏览: 469190 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

泛型通配符的使用

    博客分类:
  • Java
 
阅读更多

   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) {

        }
    }也无法起到参数类型限定的作用
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics