不明白為什么添加的一定要是course類型
2分30秒向courseToSelect中添加字符串時報錯(Exception in thread"main"java.lang.ClassCastException:xxxxx,為什么一定要求add的必須是course類型哇?
2分30秒向courseToSelect中添加字符串時報錯(Exception in thread"main"java.lang.ClassCastException:xxxxx,為什么一定要求add的必須是course類型哇?
2016-01-13
舉報
2022-03-27
換了還是報錯啊這門課程面對的是高級用戶,童鞋可以從初級課程開始學習~
2016-02-17
我也剛學,也有這個問題,我試了試,覺的“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里可以添加其他類型。
2016-02-10
謝謝大神們啊↖(^ω^)↗
2016-02-10
2016-01-21
報錯的地方為testForEach方法,當我們在遍歷時,代碼表達的是將集合中的Object類型的元素強轉成課程類型的元素(因為我們一直往集合中添加的就是課程類型的元素),所以當你往集合中添加String類的元素,在遍歷時會報錯。
2016-01-13
因為Course本身是個List類型的集合,之前我們操作各種方法的前提是我們定義了一個course類,這個類有序號,也有值,我們在使用這個集合的時候規定了只能采用這種方式來添加(取出、修改等)集合的元素,因此在當前的Course中,它只會識別course類,其他類(例如視頻中的String)會報錯。
如果你在一開始course類中把它定義成String類型,你就可以add String了,但是我們現在操作的是一個集合,光光String不符合要求,還需要對應的序號。
一點看法,歡迎討論。