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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java:ClassCastException-無法將java.lang.Class強制轉換為

Java:ClassCastException-無法將java.lang.Class強制轉換為

狐的傳說 2021-04-30 08:10:45
所以我得到了ClassCastException:無法將java.lang.Class強制轉換為com.glostrode.Management.Link在以下方法(文件的第32行)中指示的行上,發生異常的行:public Link getLink(String name) {    txtFile f = new txtFile("plugins/PrimeManager/linksList.txt");    List<String> lines = f.getLines();    int i;    txtFile f2;    for(i=0; i<lines.size(); i++){        f2 = new txtFile("plugins/PrimeManager/links/"+lines.get(i)+".txt");        if(f2.getLines().isEmpty()) {            return null;        }        Object o = f2.getObject();        Link li = (Link) o;// THIS LINE HERE        if(li.name == lines.get(i)){            return li;        }    }    return null;}該getLines()方法返回,其中List<String>包含txtFile對象的初始化指定的文件中的行。該getObject()方法如下:public Object getObject(){        try {            FileInputStream i = new FileInputStream(this.file);            ObjectInputStream o = new ObjectInputStream(i);            Object r = o.readObject();            o.close();            i.close();            return r;        } catch (IOException | ClassNotFoundException e) {            e.printStackTrace();        }        return null;    }}根據我目前的理解,所返回的對象o.readObject()應可轉換為其原始形式(讀取的文件包含一個Link對象)。我使用以下方法將其添加到文件中:public void addObject(Object obj){    try {        FileOutputStream f = new FileOutputStream(this.file);        ObjectOutputStream o = new ObjectOutputStream(f);        o.writeObject(obj);        o.flush();        o.close();        f.close();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}txtFile構造函數:public txtFile(String path) {        this.path = path;        this.file = new File(path);        if(!this.file.exists()){            try {                this.file.createNewFile();            } catch (IOException e) {                e.printStackTrace();            }        }    }}
查看完整描述

2 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

好的,
問題在于您如何調用addObject方法。
由于您是使用Link.class調用的,因此它僅返回Class對象。
不能轉換為Link li =(Link)o上的Link

相反,只需傳遞Link對象。

addObject(l)

其中l是Link的對象


查看完整回答
反對 回復 2021-05-12
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

lf.addObject(l.getClass());

你寫一個Class對象,你得到一個Class對象。

改為執行以下操作:

lf.addObject(l);


查看完整回答
反對 回復 2021-05-12
  • 2 回答
  • 0 關注
  • 312 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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