自己改的課程代碼發現類型轉換出錯
package?com.imooc.collection; import?java.util.HashSet; import?java.util.Set; /** ?*?學生類 ?*? ?*?@author?sama ?* ?*/ public?class?Student { private?String?id; private?String?name; private?Set<Course>?courses; public?String?getId() { return?id; } public?void?setId(String?id) { this.id?=?id; } public?String?getName() { return?name; } public?void?setName(String?name) { this.name?=?name; } public?Set<Course>?getCourses() { return?courses; } public?void?setCourses(Set<Course>?courses) { this.courses?=?courses; } public?Student(String?id,?String?name) { this.id?=?id; this.name?=?name; this.courses?=?new?HashSet<Course>(); } }
package?com.imooc.collection; import?java.util.ArrayList; import?java.util.Arrays; import?java.util.List; import?java.util.Scanner; import?java.util.Set; public?class?SetTest { private?List<Course>?coursesToSelect; public?List<Course>?getCoursesToselect() { return?coursesToSelect; } public?void?setCoursesToselect(List<Course>?coursesToselect) { this.coursesToSelect?=?coursesToselect; } public?SetTest() { this.coursesToSelect?=?new?ArrayList<Course>(); } public?void?testAdd() {//?創建一個課程對象,并通過調用add方法,添加到備選課程List中 Course?cr1?=?new?Course("1",?"數據結構"); coursesToSelect.add(cr1); Course?cr2?=?new?Course("2",?"C語言"); coursesToSelect.add(0,?cr2); Course[]?courses?= {?new?Course("3",?"離散數學"),?new?Course("4",?"匯編語言")?}; coursesToSelect.addAll(Arrays.asList(courses)); Course[]?courses2?= {?new?Course("5",?"高等數學"),?new?Course("6",?"大學英語")?}; coursesToSelect.addAll(2,?Arrays.asList(courses2)); } /* ?*?通過for?each方法訪問集合元素 ?*/ public?void?teatForEach() { System.out.println("有如下課程待選(通過foreach方法遍歷):"); for?(Course?cr?:?coursesToSelect) { System.out.println("課程:"?+?cr.getId()?+?":"?+?cr.getName()); } } @SuppressWarnings("unchecked") public?static?void?main(String[]?args) { SetTest?st?=?new?SetTest(); st.testAdd(); st.teatForEach(); //?創建一個新的學生對象 Student?student?=?new?Student("1",?"小明"); System.out.println("歡迎學生:"?+?student.getId()?+?":"?+?student.getName()); //?創建一個Scanner對象,用來接收從鍵盤輸入的課程ID Scanner?input?=?new?Scanner(System.in); for?(int?i?=?0;?i?<?3;?i++) { System.out.println("請輸入課程ID:"); String?courseId?=?input.next(); for?(Course?cr?:?st.coursesToSelect) { if?((cr.getId()).equals(courseId)) { student.setCourses((Set<Course>)?cr); } } } st.testForEachSet(student); } public?void?testForEachSet(Student?student) { for?(Course?cr?:?student.getCourses()) { System.out.println("選擇了課程:"?+?cr.getId()?+?":"?+?cr.getName()); } } }
我把課程代碼部分的成員變量改為private,用geterseter方法修改和獲取,但是運行的時候,輸入課程ID就報錯,好像是student.setCourses((Set<Course>) cr);這里類型轉換錯誤。
2016-12-29
你那個判斷集合里面是否有同名ID的地方,應該是如果有就不執行并報錯,沒有才進行添加