在保存之前比较Java中的两个JPasswordFields?

use*_*355 1 java swing jpasswordfield

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

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

Rei*_*eus 10

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

if (Arrays.equals(passwordField1.getPassword(), passwordField2.getPassword())) {
   // save data
} else {
  // do other stuff
}
Run Code Online (Sandbox Code Playgroud)

说明: JPassword.getText故意弃用以避免使用Strings赞成使用char[]返回的getPassword.

在调用时,getText您将获得一个可能无法更改的String(不可变对象)(反射除外),因此密码会保留在内存中,直到收集垃圾为止.

但是可以修改char数组,因此密码将不会留在内存中.

上述解决方案符合该方法.