為什么不能強制轉換
package course;
public class Course {
public String id;
public String name;
public Course(String id,String name)
{
this.id=id;
this.name=name;
}
}
package course;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//選課類就是一個List容器
public class ChooseCourse {
public List choose;
public ChooseCourse()
{
this.choose=new ArrayList();
}
public void add()
{
Course cr=new Course("1.","數據庫");
Course[]cr2={new Course("2.","操作系統"),new Course("3.","計算機網絡")};?
choose.add(cr);
choose.add(1, cr2);
Course cr3=(Course) choose.get(0);
System.out.println("添加了課程"+cr3.id+cr3.name);
}
public void iterator()
{
Iterator it=choose.iterator();
while(it.hasNext())
{
Course cr=(Course) it.next();
System.out.println("課程號:"+cr.id+"課程名:"+cr.name);
}
}
public static void main(String[] args) {
ChooseCourse cc=new ChooseCourse();
cc.add();
cc.iterator();
// TODO 自動生成的方法存根
}
}
錯誤信息xception in thread "main" java.lang.ClassCastException: [Lcourse.Course; cannot be cast to course.Course。。
請問哪里錯了
2017-01-21
這里有問題。cr是個course對象,cr2是個course數組對象,所以在list容器中你存放了兩個不同類型的對象。在后面cr2當然不能強轉為course對象。應該改為:
2017-01-21
樓上正解。你可以用泛型,這樣一開始編譯你在添加的時候不同類型就通不過