在保存之前比较的Java 2个JPasswordFields? [重复](Compare two

2019-10-17 12:53发布

可能重复:
如何检查是否JPassword字段为空

在创建一个登录报名表,我使用的两个密码字段。 保存数据之前,我想比较这两个领域; 如果它们匹配,则该数据应保存在文件中。 如果不应该打开的对话框。 请谁能帮助我。

Answer 1:

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

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

说明: JPassword.getText是故意过时的,以避免使用Strings赞成使用的char[]返回由getPassword

当调用getText你可能不被改变(除了反射)的字符串(不可变对象)等的密码留在内存中,直到垃圾收集。

字符数组但是可以被修改,因此密码会真的不留在内存中。

这上面的解决方案是在与该方法保持一致。



Answer 2:

这将有助于表明您已经尝试了什么?

但你会做这样的:

//declare fields

JPasswordField jpf1=...;
JPasswordField jpf2=...;

...

 //get the password  from the passwordfields

String jpf1Text=Arrays.toString(jpf1.getPassword());//get the char array of password and convert to string represenation
String jpf2Text=Arrays.toString(jpf2.getPassword());

//compare the fields contents
if(jpf1Text.equals(jpf2Text)) {//they are equal

}else {//they are not equal

}


文章来源: Compare two JPasswordFields in Java before saving? [duplicate]