java泛型问题

publicclassfruit{publicfruit(){System.out.println("Iamfruit!");}}publicclassappleexte... public class fruit{
public fruit(){
System.out.println("I am fruit!");
}
}
public class apple extends fruit{
public apple(){
System.out.println("I am apple!");
}
}
public class pear extends fruit{
public pear(){
System.out.println("I am pear!");
}
}
import java.util.*;
public class shuoguo{
List<apple> apples = new ArrayList<apple>();
List<? extends fruit> fruits = apples;
fruits.add(new pear());
}
运行时总出现错误
传错图片了,是这张
展开
 我来答
D的意志丶路飞
2015-11-25
知道答主
回答量:21
采纳率:0%
帮助的人:11万
展开全部
使用了 <? extends E> 这样的通配符,你的fruits变成了只能get不能set(除了null) 或者不严谨的说它变成了只读参数了, 有些类似一个生产者,提供数据。
还有,你的

List<apple> apples = new ArrayList<apple>();
List<? extends fruit> fruits = apples;
fruits.add(new pear());这些操作最好写在方法里,比如main方法
51CTO学院
2015-11-25 · 中国最大的IT实战在线培训平台
51CTO学院
中国最大的IT实战在线教育培训平台。
向TA提问
展开全部
List<? extends fruit> fruits = apples;
fruits.add(new pear());
这两句有问题,你fruits现在放的都是apples,为什么又new pear呢?
这个是不允许的。
更多追问追答
追问
但是改成new apple()的话也不对,报错还是跟现在一模一样
追答
这里不能用List fruits进行添加操作,这个是不允许的。
public static void main(String[] args){
List fruit = new ArrayList();
fruit.add(new apple());
fruit.add(new pear());

}
这种是可以的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-11-25
展开全部

不太清楚这种写法,但我知道这样是可以的。直接用多态就行了,苹果和梨子都可以添加。

List<fruit> fruits= new ArrayList<fruit>();
fruits.add(new apple());
fruits.add(new pear());
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式