las ich den folgenden Artikel über Reflexion in Java:Kann Reflexion den Zustand eines Objekts ändern?
https://community.oracle.com/docs/DOC-983192
Darin beschreibt der Autor, wie die Werte eines Objekts Felder durch Reflexion ändern. Er erklärt, wie man es macht, selbst wenn das Feld einen privaten Zugang hat.
Während ich zurück war, las ich Joshua Block's Buch: "Effective Java". Dort sagt er, dass wir, um unsicheren Zugriff auf die Felder, Methoden usw. eines Objekts zu verhindern, wann immer möglich, Feldern und Methoden den restriktivsten Modifizierer geben sollten (dh privat wann immer möglich, öffentlich oder geschützt, wenn es Teil des ausgesetzt api).
Meine Frage ist folgende:
Warum kann die Mühe der Gestaltung Ihrer Klassen nicht sinnvoll, Informationen aussetzen, wenn sie ohnehin durch Reflexion zugegriffen werden?
sollte (Eigentlich habe ich für das Stück von Informationen bin zu fragen, dass ich fehle zu verstehen, dieses Thema)
Wenn Sie ein privates oder geschütztes Feld markieren, können Benutzer Ihrer Bibliothek oder API wissen, wie sie dieses Feld verwenden (oder nicht verwenden) sollen. Es ist nicht nur eine Frage der Sicherheit. – rmlan
Dinge privat machen ist wie eine isolierte Abdeckung auf einer Steckdose: es zeigt den Menschen, wie Sie wollen, dass sie es benutzen; aber es hört nicht auf, dass jemand die Front abschraubt und die stromführenden Kabel berührt. –
Es ist auch möglich, einen SecurityManager zu verwenden, um reflektive Änderungen zu verhindern. Siehe http://stackoverflow.com/questions/7566626/how-to-restrict-developers-to-use-reflection-to-access-private-methods-and-const – dnault