亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

不明白為什么添加的一定要是course類型

2分30秒向courseToSelect中添加字符串時報錯(Exception in thread"main"java.lang.ClassCastException:xxxxx,為什么一定要求add的必須是course類型哇?

正在回答

6 回答

我也剛學,也有這個問題,我試了試,覺的“3000sama"同學說得不對,”菜鳥起飛點“說的對但沒解釋清楚:1、”為什么一定要求add的必須是course類型哇?“ ?答:不是一定!里面可以隨便添加其他類型,你可以嘗試添加

public void testAdd() {

Course cr1 = new Course("1", "數據結構");

coursesToSelect.add(cr1);

Course temp = (Course) coursesToSelect.get(0);

System.out.println("添加了課程" + temp.id + temp.name);

coursesToSelect.add("我是字符串");

System.out.println(coursesToSelect.get(1));

}

不使用foreach循環遍歷,而是使用普通打印,你會發現字符串已經被添加而且被打印出來了。老師的課程之所以報錯,是因為老師使用的是

foreach(Object obj:soursesToSelect){

Course cr = (Couse)obj;// ? ? 報錯是出在了這里,是因為存入的String類型”我是字符串“不能被強制轉換。并不是不能存,而是已經存進去不能強轉罷了。

}

結論是:add里可以添加其他類型。

4 回復 有任何疑惑可以回復我~

謝謝大神們啊↖(^ω^)↗

0 回復 有任何疑惑可以回復我~
private?List<Course>?courses;
//因為定義了泛型Course,表示List里面只能放Course類型的對象(的引用)


2 回復 有任何疑惑可以回復我~

報錯的地方為testForEach方法,當我們在遍歷時,代碼表達的是將集合中的Object類型的元素強轉成課程類型的元素(因為我們一直往集合中添加的就是課程類型的元素),所以當你往集合中添加String類的元素,在遍歷時會報錯。

1 回復 有任何疑惑可以回復我~
#1

Nesive

可以通過add()方法網集合中添加任何類型的元素。 用get()方法取得的值為Object類型 ,foreach中 用 把Object類型強制轉換為Course類型為什么還會報錯?
2016-03-31 回復 有任何疑惑可以回復我~

因為Course本身是個List類型的集合,之前我們操作各種方法的前提是我們定義了一個course類,這個類有序號,也有值,我們在使用這個集合的時候規定了只能采用這種方式來添加(取出、修改等)集合的元素,因此在當前的Course中,它只會識別course類,其他類(例如視頻中的String)會報錯。

如果你在一開始course類中把它定義成String類型,你就可以add String了,但是我們現在操作的是一個集合,光光String不符合要求,還需要對應的序號。


一點看法,歡迎討論。

1 回復 有任何疑惑可以回復我~
#1

怒放的生命012

你說錯了Course只是集合的一個元素而不是一個集合
2016-06-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

不明白為什么添加的一定要是course類型

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號