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

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

為什么不能強制轉換

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。。

請問哪里錯了

正在回答

2 回答

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);
}

這里有問題。cr是個course對象,cr2是個course數組對象,所以在list容器中你存放了兩個不同類型的對象。在后面cr2當然不能強轉為course對象。應該改為:

public?void?add()
{
????Course?cr=new?Course("1.","數據庫");
????Course[]cr2={new?Course("2.","操作系統"),new?Course("3.","計算機網絡")};?
????choose.add(cr);
????choose.addAll(1,?cr2.asList());
????Course?cr3=(Course)?choose.get(0);
????System.out.println("添加了課程"+cr3.id+cr3.name);
}


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

qq_勿語_1 提問者

非常感謝!
2017-01-21 回復 有任何疑惑可以回復我~

樓上正解。你可以用泛型,這樣一開始編譯你在添加的時候不同類型就通不過

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

舉報

0/150
提交
取消

為什么不能強制轉換

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

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

幫助反饋 APP下載

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

公眾號

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