java - 在保存之前比较 Java 中的两个 JPasswordField?

标签 java swing jpasswordfield

<分区>

Possible Duplicate:
How to check if JPassword field is null

在创建登录注册表单时,我使用了两个密码字段。在保存数据之前,我想比较两个字段;如果它们匹配,则数据应保存在文件中。如果不是,它应该打开一个对话框。请任何人帮助我。

最佳答案

最安全的方法是使用 Arrays.equals :

if (Arrays.equals(passwordField1.getPassword(), passwordField2.getPassword())) {
   // save data
} else {
  // do other stuff
}

说明: JPassword.getText 被故意弃用以避免使用 Strings 以支持使用 char[]getPassword 返回。

当调用 getText 时,您会得到一个不能更改(反射除外)的字符串(不可变对象(immutable对象)),因此密码会一直保留在内存中,直到被垃圾回收。

然而,字符数组可能会被修改,因此密码实际上不会保留在内存中。

上述解决方案与该方法保持一致。

关于java - 在保存之前比较 Java 中的两个 JPasswordField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995986/

相关文章:

java - 在 jscience 中使用惯性矩

java - JEdi​​torPane 的语法荧光笔,字体更改会产生偏移错误

java - JTable 不显示列名 - 使用 JScrollPane

java - 以编程方式填充 JPasswordField 而不创建 String 对象

java - MathML 到 LaTeX 的转换

java - Java 的对象和类是我的逻辑缺陷

multithreading - 将多个嵌入式 javafx JFXPanel 管理到 swing tabbedpane 中

java - 如何访问 Swing JTextField/JPasswordField 内的值?

java - 如何使用swing清空java中的密码字段值(字符串)

java - Android 调整图片大小