java 集合中泛型通配符 用了之后就不能添加 元素了 为什么?
我知道为什么不能添加元素,是因为在用过通配符后编译器中的添加方法的形式参数类型变成了?号所以不能添加泛型不过我不明白这个设计的概念,既然是通配符那就应该可以添加数据啊.就...
我知道 为什么不能添加元素,是因为在用过 通配符后编译器 中的添加方法 的形式参数类型 变成了?号 所以不能添加泛型 不过 我不明白这个设计的概念, 既然是通配符 那就应该可以添加数据啊.就如同在<>中放入Object的道理应该一样啊. 这是不是 设计缺陷啊.
展开
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没有用泛型,什么类型的对象都可以存放。只是取出来的时候,会要类型转换,这个过程很容易出错。
希望我的回答能对你有所帮助,荣幸之至。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |