【问题标题】:char[] cannot be converted to Stringchar[] 无法转换为字符串
【发布时间】:2014-11-22 16:56:55
【问题描述】:

我试图设置在 JPasswordField 中输入的密码并且出现了这个错误:

"Incompatible types: char[] cannot be converted to String"

            dts.setSalary(Double.parseDouble(txtSalary.getText()));
            selected=chgAccess.getSelectedIndex();
            dts.setAccess_number((String)chgAccess.getItemAt(selected));
            dts.setLogin(txtLogin.getText());
            //HERE
            dts.setPassword((String)txtPassword.getPassword());

我该如何解决?

额外的问题:那么它应该在我的数据库中作为 VARCHAR 类型,它会工作吗?我的意思是,我在数据库中为文本而不是密码创建了空间;我在 MySQL 中没有找到数据类型密码。

【问题讨论】:

    标签: java string char jpasswordfield


    【解决方案1】:

    getPassword 返回一个 char 数组是有充分理由的 - 防止由于难以擦除内存中的 String 内容而对 String 进行任何查找。相反,我建议 salting the password 并将哈希存储在数据库中。

    【讨论】:

      【解决方案2】:

      getPassword() 返回 char[] - 它不能简单地转换为 java.lang.String。但是,您可以为这个 char 数组构造一个新字符串:

      dts.setPassword(new String(txtPassword.getPassword()));
      

      或者,更好:

      dts.setPassword(String.valueOf(txtPassword.getPassword()));
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2017-12-29
      • 2013-05-13
      • 1970-01-01
      相关资源
      最近更新 更多