Swing类型转换错误:Object无法转为String问题求助
解决String类型转换错误:Object转String失败的问题
我看了你的代码,一眼就揪出问题所在啦——你调用col.setCodeA()的时候传错参数类型了!
错误原因拆解
你的Collabo类里,setCodeA()方法明确要求传入String类型的参数,但你现在把jComboBoxAlbum.getSelectedItem()强转成Collabo对象直接传进去,这就难怪编译器报错“Object cannot be converted to String”了,完全是类型不匹配导致的。
正确的赋值方式
你已经在Collabo类里重写了toString()方法(返回的就是codeA字符串),而且jComboBoxAlbum里的选项本身就是Collabo对象,所以只需要两步就能搞定:
- 先把选中的对象强转成
Collabo类型 - 调用它的
getCodeA()方法拿到String类型的codeA(或者直接用toString(),因为你重写过,效果一致)
给你两种可行的写法:
写法一:调用getCodeA()(推荐,语义更清晰)
Collabo selectedCollabo = (Collabo) jComboBoxAlbum.getSelectedItem(); col.setCodeA(selectedCollabo.getCodeA());
写法二:利用重写的toString()
Collabo selectedCollabo = (Collabo) jComboBoxAlbum.getSelectedItem(); col.setCodeA(selectedCollabo.toString());
完整修正后的代码片段
把你的代码改成这样就没问题了:
Collabo col = new Collabo(); // 先获取选中的Collabo对象,再提取它的codeA字符串 Collabo selectedCollabo = (Collabo) jComboBoxAlbum.getSelectedItem(); col.setCodeA(selectedCollabo.getCodeA()); boolean ok = daoCol.insertCollabo(col); if (!ok) { JOptionPane.showMessageDialog(null,"Insertion impossible !","Avertissement",JOptionPane.ERROR_MESSAGE); } this.dispose();
额外小提醒
以后遇到类型转换错误,先核对清楚方法要求的参数类型和你传入的类型是否一致,这类问题大多是因为没拿到对象的目标属性值,反而直接传了对象本身~
内容的提问来源于stack exchange,提问作者juliee
相关产品推荐
相关产品推荐

