泛型通配符?的用法

 泛型中提供了?通配符,可以引用其他各种参数化的参数,?通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法
具体可以看如下代码:

 public static void Convert(Collection<?> collection){
  collection.add("abc");//编译时报错 通配符?无法调用参数化方法
  collection.size();//可以调用因为无参
  collection.equals(1);//正确
   }

}

Collection<?> collection表示任意参数化类型的集合,上面collection.add("abc")错误是因为是泛型的参数是不确定的,而size()方法,equals()方法在不确定参数的情况下还可以正确调用,是因为无论泛型参数是什么类型这两个方法都是可以调用的。

相信在阅读API文档时大家经常会见到<? extends E>,<? super E>,这是什么意思呢?请先看如下代码:

public class Test {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Set<? super Integer> set1 = new TreeSet<Number>();//限定通配符的下边界,即可引用Integer类的父类对象
  Set<? extends Number> set2 = new TreeSet<Integer>();//限定通配符的上边界,即可引用所有Number类的子类对象
  Set<String> x = null;
  Set<?> y = null;
  y=x;//通配符可引用任意类型泛化参数
  x=y;//  
 }
注意:限定通配符总是包括自己。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值