Obecnie uczę się JavaFX i jestem trochę zdezorientowany faktem, że PasswordField w JavaFX nie ma metody, która zwraca char lub nawet tablicę bajtową hasła. Zamiast tego muszę użyć getText(), która zwraca String.Dlaczego JavaFx PasswordField zwraca zawartość jako ciąg?
Jak można przeczytać here huśtawka postanowiła oznaczyć metodę getText() jako zdefragmentowaną i mówi programiście, aby użył metody getPassword(), która zwraca tablicę znaków.
Jeśli się nie poddam poprawnie, to tablice znaków są o wiele bezpieczniejsze, ponieważ można je całkowicie usunąć z pamięci RAM, ustawiając wszystkie wartości na 0. Dlaczego więc Oracle zdecydowało się użyć łańcuchów w JavaFx? Czy jest jakiś nowy sposób na usunięcie strun ze sterty?
EDYCJA: O ile mi wiadomo, hasła char są daleko oszczędzające, ponieważ możemy je usunąć, kiedy tylko chcemy (nadpisując je), co nie ma miejsca w przypadku Ciągów.
Wygląda na to, że mówisz, że nie ma metody "getPassword()", a jedynie metoda 'getText()', którą przeczytałeś, jest ostatnio przestarzała. Czy używasz nieaktualnej biblioteki JavaFX? To może wyjaśnić, dlaczego ta metoda nie jest dostępna. – mmcrae
@mmcrae Nie, pole passwordField w JavaFX 8 nie ma metody getPassword, jak można zobaczyć tutaj: [link] (https://docs.oracle.com/javase/8 /javafx/api/toc.htm) – Brotcrunsher
Nie powiedziałbym, że tablice char są ** daleko ** bezpieczniejsze. Pracujesz w pamięci VM bez względu na typ danych. Spójrz na ten [powiązany wpis] (http://stackoverflow.com/questions/29368926/safe-way-to-get-password- from-passwordfield-in-javafx) i jego komentarze, aby uzyskać więcej informacji. – OttPrime