List<? extends String> list你要理解这个形参的意思,是说你不加泛型,list里面可以存放任意类型的元素,但是一旦加上泛型作为类型限制,list就只能存放某种类型的数据。
这里list中存放继承String类的某一个子类,而继承String类的子类又不确定,你怎么就能决定list中add什么类型的数据呢。就像一个人有三个孩子,你想给二儿子100块钱,现在你都不知道谁是二儿子,就知道他有三个儿子,你怎么给。你肯定郁闷,老是觉得既然不能放字符串,D怎么就对了呢,这么给你说吧,你声明类型的时候是否可以用接口代替实现类,要是你很容易理解这个,那这个是同样道理,真不理解的话,你可以在list = new ArrayList<String>();后面继续写,list.add("xxoo");你会发现同样报错,以为这个泛型只是声明
这里list中存放继承String类的某一个子类,而继承String类的子类又不确定,你怎么就能决定list中add什么类型的数据呢。就像一个人有三个孩子,你想给二儿子100块钱,现在你都不知道谁是二儿子,就知道他有三个儿子,你怎么给。你肯定郁闷,老是觉得既然不能放字符串,D怎么就对了呢,这么给你说吧,你声明类型的时候是否可以用接口代替实现类,要是你很容易理解这个,那这个是同样道理,真不理解的话,你可以在list = new ArrayList<String>();后面继续写,list.add("xxoo");你会发现同样报错,以为这个泛型只是声明
解决方案 »
- 请教关于后台弹出页面无法遮蔽全屏的问题(artdialog)
- 求解释
- spring mvc 在JSP页面多FORM,同时提交到不同的controller?
- 我的myeclipse一个javaproject图标上总有个红叉,为什么
- 急!!!CKEditor 为什么显示不出来???
- 运行实例是出错
- 下载空间更新了spring入门学习笔记.欢迎大家下载
- Spring+hibernate+struts程序为什么运行一段时间后就报"java.lang.OutOfMemoryError: Java heap space"错?
- 求jfreechart出的图片直接转为byte[]数组怎么玩
- 高分:jb8产生ejb的路径怎么设置???????
- 大侠们, j2ee应用在win8 64位下环境搭建,jre和tomcat那个版本支持64位
- 求助啊、高手来。
你可以写个demo感受下public void test(List<? extends String> list){
list.add("");
}eclipse中,直接报错,毫无悬念
你好,对于你讲到的
"这里list中存放继承String类的某一个子类,而继承String类的子类又不确定,你怎么就能决定list中add什么类型的数据呢"我自己的理解是:
String是final类型,也就是说不可能有子类,而<? extends String>的意思是说 这里只能存入String的子类才行
所以没有任何一个对象满足上述条件
也就是List<? extends String> list 的size()永远返回的是0,
这也是为什么楼主疑惑的A不能选的原因