我在Stackoverflow上找到了什么" ClassCastException"是的,但我不知道如何在我的案例中解决问题:
我有一个班级" Gebruiker" (=荷兰用户)。每个Gebruiker / User-object都有一个" String Gebruikersnaam(=用户名)"和一个"字符串密码"。 "布尔类型"决定用户是管理员(true)还是普通用户(= false)。
public class Gebruiker implements Serializable{
private String gebruikersnaam;
private String wachtwoord;
private Boolean type; //0 = user 1=super user
public Gebruiker(String gebruikersnaam, String wachtwoord, Boolean type) {
gebruikersnaam = this.gebruikersnaam;
wachtwoord = this.wachtwoord;
type = this.type;
}
此类中的方法将用户名返回为String。
/**
* @return the gebruikersnaam
*/
public String getGebruikersnaam() {
return gebruikersnaam;
}
拥有ArrayList<Gebuiker> gebruikers;
,我存储所有用户。
下面代码中的If语句将使用我的方法"gebr.getGebruikersnaam()"
的给定&#34; Gebruiker&#34; -object中的用户名与用户名输入字段中的文本&#34; LogOnName&#34进行比较;。所以我比较一个字符串和一个字符串,但我得到一个错误......
for (Gebruiker gebr : gebruikers) {
//line 72 in the code:
if (gebr.getGebruikersnaam().equals(logOnName.getText())){
//do something here
}
}
由于我无法解决的错误而生成的Stacktrace的一部分:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to my.venster.Gebruiker
at my.venster.zeeOnline.logOnGebruiker(zeeOnline.java:72)
at my.venster.zeeOnline.logOnButtonActionPerformed(zeeOnline.java:910)
at my.venster.zeeOnline.access$300(zeeOnline.java:30)
at my.venster.zeeOnline$4.actionPerformed(zeeOnline.java:429)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
我理解当我尝试将一种类型转换为与该类型不兼容的另一种类型时,我可能会得到ClassCastException。即一个整数到一个字符串,但在这里,我需要一个来自User对象的字符串,它也是一个字符串。
当我尝试为一个用户执行登录过程时,为什么会出现恼人的ClassCastException?
答案 0 :(得分:0)
打印logOnName.getText()
并查看它是否打印字符串或对象。你必须这样做:
this.gebruikersnaam = gebruikersnaam;
this.wachtwoord = wachtwoord;
this.type = type;