Java ist doof
Im rahmen meines Praktikums programmiere ich so einiges in Java, grade ebend habe ich geschafft, mit java.lang.reflect private Felder einer Klasse zu lesen und zu schreiben.
Da fragt man sich doch echt wozu es private Felder gibt…
lesen:
Field field = instance.getClass().getDeclaredField("feldname");
field.setAccessible(true);
Object object = field.get(instance);
schreiben:
Field field = instance.getClass().getDeclaredField("feldname");
field.setAccessible(true);
field.set(instance, newValue);
Außerdem kann ich Java sowieso nicht leiden! und jetzt noch viel weniger.
Keine Friends, keine Mehrfachvererbung, keine Privatsphäre…


November 29th, 2005 at 20:10
Das mit der Privatheit ist nur zur Unterstützung und nicht absolut gemeint. Übersetzte mal ein C++ mit
#define private public
Reflection ist aber auch gedacht für Debugger oder für den Remote Procedure Call Mechanismus. Manchmal muss man halt an die internen Dinge ‘ran kommen.
Friends benötigt man sehr selten: evtl gibt es ein anderes Design Pattern dafür.
Mehrfachvererbung kann man oft mit Interfaces auflösen.
Am besten du machts das Beste aus dem Werkzeug (Programmiersprache) und lässt dir den Spaß nicht verderben.
December 5th, 2005 at 08:32
Für
#define private publicmüsste man zumindestens den Quellcode haben und neu übersetzen.Mit interfaces kann man aber keine Funktionen implementieren.