Rückgabe von geschützten Objekten.
-
Hallo zusammen,
ich habe da mal eine Frage und zwar, wie kann ich in Java ein Objekt von einer Methode aus so zurückgeben das der Zugriff auf dessen Attribute von außerhalb nur lesbar sind?
Gruß,
Daniel_S
-
Leider hat Java keine const correctness und das ist so nicht möglich. Für Collections gibt es dafür bspw. Unmodifiable Collections (siehe http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html )
Für alles andere wird dir nichts anderes übrigbleiben als entweder eine Kopie des Objektes zu erstellen (bzw. gleich eine die keine Setter-Methoden mehr hat)
MfG SideWinder
-
Oder man erstellt ein ReadOnly-Interface für das Objekt und gibt dieses dann zurück. Also in etwa:
public interface ReadOnlyBla { public int get(); } public class Bla implements ReadOnlyBla { private int m_value; public int get() { return m_value; } public void set(int value) { m_value = value; } } public class Foo { private Bla m_bla = new Bla(); public ReadOnlyBla getBla() { return m_bla; } }
Grüssli
-
Danke für eure Antowrten. Das nur Kopien zurückgegeben werden hatte ich auch schonmal überlegt, das Problem ist nur das es nur kurzlebige Objektkopien sind, die aber ständig wegen Veränderungen abgefragt werden müssen.
Ich werde es dann wahrscheinlich mit dem readonly Interface machen.
Warum hat man eigentlich nie const correctnes in Java eingeführt? Das würde doch viele Vorteile bringen, und auch den Code entschlacken im Vergleich zu der Methode mit den Interfaces.
-
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4211070
MfG SideWinder