黑马程序员技术交流社区
标题:
泛型中的通配符问题
[打印本页]
作者:
快乐的黑马
时间:
2014-1-16 18:38
标题:
泛型中的通配符问题
泛型中的通配符问题:
当具体类型不确定的时候,可以用通配符?
当操作类型时,不需要使用类型的具体功能时,只使用Object类中功能
那么用Object来表示不就行了吗?干嘛还用通配符?呢?
比如:
public class Test
{
public void show1(ArrayList<?> al){
}
public void show2(ArrayList<Object> al){
}
//这上面两个方法有何不同呢?
}
作者:
黄晓鑫
时间:
2014-1-16 18:48
这俩个是没有区别 但是通配符还可以 继续其他的类 比如< ? extends Object> 这个是所有继承object类型或者子类型 <? super Obejct>Object类型和子类型通配符可以加入限定
作者:
快乐的黑马
时间:
2014-1-16 18:57
黄晓鑫 发表于 2014-1-16 18:48
这俩个是没有区别 但是通配符还可以 继续其他的类 比如< ? extends Object> 这个是所有继承object类型或者 ...
谢谢哥们的解答,但如果我在上面两个加入add()方法时,为什么只有Object才行呢?
作者:
汪伟楠
时间:
2014-1-16 19:14
因为有泛型限定:上限,下限
? extends Number —>必须是Number的子类。
? super Integer —>必须是Integer的父类。
限定通配符?总是包括自己,不能把?给一个具体类型 ,可以把具体类型给一个?。
作者:
黄晓鑫
时间:
2014-1-16 19:22
哥们够意思
作者:
快乐的黑马
时间:
2014-1-16 19:30
哥们够意思,是的,是这个问题。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2