Variabeln lesend und veränderbar für andere Klassen regeln (Java)?

...komplette Frage anzeigen

3 Antworten

Wie kann ich jedoch so ein Aufruf in Reduction verhinder:

Kurze Antwort: Das ist in Java nicht vorgesehen.

Ich kenne leider nicht aussreichend den Kontext deines Problemes - aber klingt so, als würdest du an ein paar Prinzipien der Objektorientierung vorbeiarbeiten ;).

Grundsätzlich solltest du z.B. auch

graph.getNodes().get(0).getWeigth(5)

nicht machen bzw. vermeiden. Gibt so einen Grundsatz, dass man eigentlich nur mit Objekten in der Nähe reden sollte - und nicht eben über 2 Ecken (Objekte sind "schüchtern" ;) )

Getter und Setter sollte man auch immer vermeiden (auch wenn ich in diesem Fall den Kontext für Aussagen in dieser Richtung nicht gut genug kenne).

Jedenfalls:

C++ hat z.B. tatsächlich einen "Hack" für so etwas - da kann man Klassen als "friend" deklarieren und anderen Klassen erlauben, private Zeugs zu lesen und zu schreiben.

Java gäbs prinzipiell auch einen Walkaround: Mit Package-Sichtbarkeit arbeiten. modifiableGraph und node in ein Package - und dann setWeight Packet-Sichtbarkeit geben. Dann kann effektiv auch nur modifiableGraph drauf zugreifen.

Wobei ich das als ziemlichen Missbrauch vom Java-Packetsystem empfinde und lieber raten würde strukturell etwas zu ändern, um so eine Situation vollständig zu vermeiden.

Gruß

Tuxgamer

Naja, da du das Programm schreibst, braucht du ja nur den Set-Befehl nicht verwenden. Willst du verhindern, dass durch fremden Quellcode der Wert geändert wird, dann mach eine Sicherheitskopie der Variable und wenn beim Vergleich beider Variablen ein Unterschied vorhanden ist, schreib die Kopie zurück ins Original.

Wie die Frage einfach mal 00,00 mit den ganzen Hashtags zu tun hat und der Nicht-Informatiker, die du mit diesen "Universal"-Hashtags ansprichst eh nicht helfen können, weil sie nichts verstehen.

klauszi 01.08.2017, 16:09

haha verdammt, wie ist das passiert? ich habe nur java und informatik angegeben xD Lustigerweise kann ich auch nur java und informatik als Hashtag entfernen. Was geht bei gutefrage ab????

1

Was möchtest Du wissen?