A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 快乐的黑马 中级黑马   /  2014-1-16 18:38  /  1251 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型中的通配符问题:
        当具体类型不确定的时候,可以用通配符?
        当操作类型时,不需要使用类型的具体功能时,只使用Object类中功能
那么用Object来表示不就行了吗?干嘛还用通配符?呢?
比如:
public class Test
{
        public void show1(ArrayList<?> al){
       
        }
        public void show2(ArrayList<Object> al){
       
        }
        //这上面两个方法有何不同呢?
}

5 个回复

倒序浏览
这俩个是没有区别 但是通配符还可以 继续其他的类 比如< ? extends Object> 这个是所有继承object类型或者子类型 <? super Obejct>Object类型和子类型通配符可以加入限定
回复 使用道具 举报
黄晓鑫 发表于 2014-1-16 18:48
这俩个是没有区别 但是通配符还可以 继续其他的类 比如< ? extends Object> 这个是所有继承object类型或者 ...

谢谢哥们的解答,但如果我在上面两个加入add()方法时,为什么只有Object才行呢?
回复 使用道具 举报
因为有泛型限定:上限,下限
? extends Number —>必须是Number的子类。
? super Integer —>必须是Integer的父类。
限定通配符?总是包括自己,不能把?给一个具体类型 ,可以把具体类型给一个?。
回复 使用道具 举报
哥们够意思
回复 使用道具 举报
哥们够意思,是的,是这个问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马