Я знаю, что делает класс JPasswordField, и как / когда его использовать. Это не вопрос, просто для ясности.
Что я не понимаю, так это почему его функциональность не может быть частью JTextField: какая проблема возникнет, если они сделают методы getEchoChar / setEchoChar видимыми в классе JTextField? Какую конкретную ситуацию они пытались избежать при проектировании JTextField и JPasswordField как отдельных компонентов?
В документах они говорят:
JTextField
...
Методы setEchoChar и getEchoChar не предоставляются напрямую, чтобы избежать новой реализации подключаемого внешнего вида, непреднамеренного раскрытия символов пароля. Для предоставления сервисов, подобных паролям, отдельный класс JPasswordField расширяет JTextField, чтобы предоставить этому сервису независимо подключаемый внешний вид.
и
JPasswordField
...
JPasswordField предназначен для совместимости с исходным кодом java.awt.TextField, используемого с набором echoChar. Он предоставляется отдельно, чтобы упростить безопасное изменение пользовательского интерфейса для JTextField без влияния на ввод пароля.
Но я действительно не смог понять, что они означают (особенно в « избежать»). внешний вид подключаемого модуля непреднамеренно раскрывает символы пароля").