classCastexception比较两个字符串

时间:2014-09-18 11:51:42

标签: java string compare classcastexception

我在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?

1 个答案:

答案 0 :(得分:0)

打印logOnName.getText()并查看它是否打印字符串或对象。你必须这样做:

this.gebruikersnaam = gebruikersnaam;
this.wachtwoord = wachtwoord;
this.type = type;