为什么 JPasswordField 中的 getText() 被弃用了?

2022-09-01 05:36:35

我以前从未想过,只有我使用了返回字符数组的方法,并且我看到该方法已被弃用。但是现在我想了,为什么这种方法被弃用了getPasswordgetText

Java 文档解释道:

已弃用从Java 2平台v1.2开始,由getPassword取代。

提取由组件表示的部分文本。如果长度为 0,则返回空字符串。

出于安全原因,此方法已弃用。请改用该方法。getPassword

但这些安全原因是什么?对此有什么想法吗?

提前感谢您。


答案 1

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

调用时,您会得到一个可能被修改的char数组,因此密码实际上不会保留在内存中。getPassword


答案 2

试试这个 :

String myPass=String.valueOf(passwordField.getPassword());

推荐