java 集合中泛型通配符 用了之后就不能添加 元素了 为什么?

我知道为什么不能添加元素,是因为在用过通配符后编译器中的添加方法的形式参数类型变成了?号所以不能添加泛型不过我不明白这个设计的概念,既然是通配符那就应该可以添加数据啊.就... 我知道 为什么不能添加元素,是因为在用过 通配符后编译器 中的添加方法 的形式参数类型 变成了?号 所以不能添加泛型 不过 我不明白这个设计的概念, 既然是通配符 那就应该可以添加数据啊.就如同在<>中放入Object的道理应该一样啊. 这是不是 设计缺陷啊. 展开
 我来答
单v纯微笑
2016-05-10 · 超过30用户采纳过TA的回答
知道答主
回答量:69
采纳率:85%
帮助的人:44.1万
展开全部

首先泛型是用来约束的(或者说是规范化),泛型的本质是参数化类型,不是用来通配的(这个说法也不完全对),这个概念一定不要混淆了。

你添加的元素是String类型的,那么你的代码就得这样:

ArrayList<String> arr = new ArrayList<String>();

或者:

List<String> arr = new ArrayList<String>();  // 多态,推荐使用

再或者:

List arr = new ArrayList();
ArrayList arr = new ArrList(); // 这两种没有用泛型,编译器会提示警告

用上面1和2方式的话,你的arr集合就只能存放String类型对象,3没有用泛型,什么类型的对象都可以存放。只是取出来的时候,会要类型转换,这个过程很容易出错。

希望我的回答能对你有所帮助,荣幸之至。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式