网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月14日
漏签
0
天
java吧
关注:
1,304,429
贴子:
12,867,695
看贴
图片
吧主推荐
视频
游戏
10
回复贴,共
1
页
<返回java吧
>0< 加载中...
Java 每日一题:2016年8月19日
只看楼主
收藏
回复
小米干饭000
淼淼沝
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
每天在这里贴一道 Java 题。
问题不难,有 Java 的基本知识就可以做出来。
问题也不偏,日常工作中时不时会碰到。
每日一题索引页:52.36.153.52:8080/javaquestions/
请问上面的程序有无编译错误?
送TA礼物
1楼
2016-08-19 13:01
回复
小米干饭000
淼淼沝
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
源程序:
package javaquestions;
import java.util.ArrayList;
import java.util.List;
public class JavaQuestion20160819
{
public static void main(String[] args)
{
List<Animal> list1 = new ArrayList<Animal>(); // 1
List<Dog> list2 = new ArrayList<Dog>();// 2
List<? extends Animal> list3 = new ArrayList<Dog>(); // 3
method(list1); // 4
method(list2); // 5
method(list3); // 6
}
public static void method(List<? extends Animal> aList)
{
for (Animal animal : aList) // 7
{
System.out.println(animal);
}
aList.add(new Animal()); // 8
aList.add(new Dog()); // 9
aList.add(null); // 10
}
}
class Animal
{
}
class Dog extends Animal
{
}
2楼
2016-08-19 13:02
回复
收起回复
2026-06-14 14:11:08
广告
不感兴趣
开通SVIP免广告
hivefnrly64
司马水
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
5.6应该会报错吧,
IP属地:广东
来自
Android客户端
3楼
2016-08-19 13:10
回复
收起回复
xiaoliheng1993
水
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
快点来人啊 实在不会了
4楼
2016-08-19 20:11
回复(1)
收起回复
Limit_JX
淼水
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
子曰:“发愤忘食,乐以忘忧不知老之将至…
来自
iPhone客户端
5楼
2016-08-19 20:14
回复
收起回复
沐阳融雪
淼淼淼
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这是泛型里的知识点,应该不会有编译错误吧
IP属地:湖北
来自
Android客户端
6楼
2016-08-19 21:09
回复
收起回复
贴吧用户_0CGXXAt
淼淼淼沝
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
8和9 有编译错误
7楼
2016-08-19 22:18
回复
收起回复
不过中级不改名了
淼淼淼水
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我去,8 9报错了,说只能添加null值
IP属地:北京
8楼
2016-08-19 22:22
回复
收起回复
2026-06-14 14:05:08
广告
不感兴趣
开通SVIP免广告
L达O丽V媛E
淼沝
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
求楼主解答
9楼
2016-08-23 19:08
回复
收起回复
小米干饭000
淼淼沝
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
简单解释一下。如果看不懂,就去看书吧。Java的泛型还是有点难度的。
方法的参数是:List<? extends Animal> aList ,这说明传入的参数可以是 List<Animal>,可以是 List<Dog>,也可以是List<Aniaml的任一子类>。
因为List 中元素的类型是 Animal 或 Animal 的子类,所以注释 7 处的 for-each循环不会有任何问题。但你如果往aList 中增加元素,就会出问题。
假设你把 list2 (List<Dog>)传入该方法,在这个方法里,你使用 aList.add(new Animal()); 增加了一个 Animal 对象。方法运行完之后,你继续使用 list2 变量。因为 list2 的类型是 Dog,编译器认为list2中所有的元素都是 Dog,但此时 list2中已经混进来一个 Animal 对象,使用list2 的时候肯定会出类型转换异常。为了避免这种情况出现,对使用 ?或 ? extends 声明的的泛型集合,不能添加元素(null 是例外)。
如果需要在集合中添加元素,就需要使用 super 关键字。但使用 super 之后也会有很多限制。
11楼
2016-08-23 21:42
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
53年等待,尼克斯夺NBA总冠军
2668980
2
拉锯战!五星巴西战平摩洛哥
2540371
3
FUT选手鞭尸,EDG翻盘复仇
2149784
4
偷麻了!谷店挂惯犯黑名单
2109429
5
官媒怒批学生玩烂梗
1838590
6
官司打三年,任天堂诉帕鲁案尾声
1437225
7
没少看抗吧!Leave嘴瓢喊黑称
1152456
8
补时绝平!卡塔尔1-1扳平瑞士
1132037
9
艰难取胜!BLG淘汰WE进决赛
967758
10
昙花六现,张雪机车夺第六冠
793401
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示