java string通配符_java通配符

)

这是因为泛型的参数是不考虑继承关系就直接报错

这就得用?通配符

import java.util.ArrayList;

import java.util.Collection;

import java.util.List;

publicclass GernericTest {

publicstaticvoid main(String[] args) throws Exception{

List listInteger =new ArrayList();

List listString =new ArrayList();

printCollection(listInteger);

printCollection(listString);

}

publicstaticvoid printCollection(Collection> collection){

for(Object obj:collection){

System.out.println(obj);

}

}

}

在方法public static void printCollection(Collection> collection){}中不能出现与参数类型有关的方法比如collection.add();因为程序调用这个方法的时候传入的参数不知道是什么类型的,但是可以调用与参数类型无关的方法比如collection.size();

总结:使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量的主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法。

1.2 泛型中的?通配符的扩展

1.2.1 界定通配符的上边界

Vector extends 类型1> x = new Vector();

类型1指定一个数据类型,那么类型2就只能是类型1或者是类型1的子类

Vector extends Number> x = new Vector();//这是正确的

Vector extends Number> x = new Vector();//这是错误的

1.2.2 界定通配符的下边界

Vector super 类型1> x = new Vector();

类型1指定一个数据类型,那么类型2就只能是类型1或者是类型1的父类

Vector super Integer> x = new Vector();//这是正确的

Vector super Integer> x = new Vector();//这是错误的

提示:限定通配符总是包括自己

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值