tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
396
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Hallo,

    einfach mal eine Grundsatzfrage an die großen Meister, die mir hier schon so oft super geholfen haben Aber natürlich darf sich jeder angesprochen fühlen etwas dazu zu sagen ...

    Mich würde interessieren, wie ihr Methoden findet, die das Objekt, also this zurückgeben?
    einfaches Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    public class GibZurueck
    {
     
        private boolean gesetzt = false;
        
        public GibZurueck()
        {
            
        }
        
        public GibZurueck setGesetztNeu(boolean neuerWert)
        {
            this.gesetzt = neuerWert;
            
            return this;
        }
        
        public boolean getGesetzt()
        {
            return this.gesetzt;
        }
        
        public static void main(String[] args)
        {
            GibZurueck gz = new GibZurueck();
            
            System.out.println( "Wert = " + gz.setGesetztNeu(true).getGesetzt() );
        }
     
    }

    Oder muss man noch spezielles beachten, dass auch wirklich das Objekt zurückgegeben wird?
    Haut mir aber ruhig auf die Finger, wenn ich da böses gemacht habe!

    Danke euch!
    Gruß
    Gerrit
     

  2. #2
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    In diesem Fall halte ich eine getter-Methode für sinnlos, da die Variable/das Objekt sowieso in der gleichen Klasse ist und somit immer Zugriff besteht.
    Solche getter- und setter-Methoden sind dafür gedacht, dass du anderen Klassen eine Schnittstelle auf die Variable/das Objekt bietest. So kannst du z.b. verhindern, dass eine fremde Klasse einen ungültigen Wert in das Objekt schreibt.
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  3. #3
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Zitat Zitat von Matze Beitrag anzeigen
    In diesem Fall halte ich eine getter-Methode für sinnlos, da die Variable/das Objekt sowieso in der gleichen Klasse ist und somit immer Zugriff besteht.
    Solche getter- und setter-Methoden sind dafür gedacht, dass du anderen Klassen eine Schnittstelle auf die Variable/das Objekt bietest. So kannst du z.b. verhindern, dass eine fremde Klasse einen ungültigen Wert in das Objekt schreibt.
    Ja, in diesem Fall
    Das sollte auch nur ein Beispiel sein. In meinem Anwendungsfall sieht das eher so aus:
    Code :
    1
    
    sbHTML.append( new EineKlasse.tuWas().getWert() );
    Also es handelt sich schon um unterschiedliche Klassen.
     

  4. #4
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Diese Methodik ist durchaus üblich und nennt sich Fluent Interface. Vorrangig findet man das bei Implementierungen des ValueObject Pattern (d.h. für Typen die immutable sind). Hier wird dann aber oft nicht this zurückgegeben sondern eine neue Instanz der Klasse. Die Methoden heißen dann auch eher withFooBar() um den konfigurativen Aspekt besser zu verdeutlichen.

    Für Setter kann man das machen um z.B. die Konfigurationsmöglichkeit der Klasse zu verdeutlichen.

    Den Punkt mit dem sinnlosen Getter kann ich so nicht zustimmen. Oft benutzt ein Client das Objekt durch ein Interface, dass nur den Getter enthält. Die Settermethode ruft dann im Idealfall eine Factory, die die Instanz "konfiguriert" und nur über das Interface zurückgibt. So erlaubt man die Konfiguration an einer zentralen Stelle und verhindert das nachträgliche Umkonfigurieren. Sehr beliebte Methodik im bereich Serverprogrammierung / Spring usw.

    Gruß
    Ollie
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Das Methoden this zurückgeben ist durchaus sinnvoll.

    Siehe Fluent Interface

    Gruß

    \edit: Ups, zu spät. Der Beitrag war doch eben aber noch nicht da... ?
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Kryptaesthesie Kryptaesthesie ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    127.0.0.1
    Beiträge
    189
    Zitat Zitat von Oliver Gierke Beitrag anzeigen
    ...Hier wird dann aber oft nicht this zurückgegeben sondern eine neue Instanz der Klasse. Die Methoden heißen dann auch eher withFooBar() um den konfigurativen Aspekt besser zu verdeutlichen.
    Spricht denn etwas dagegen nicht eine neue Instanz zurückzugeben, sondern die aktuelle Instanz? Weil ansonsten müsste ich in die Instanz wieder alle anderen noch vorhandenen Variablen rüberschaufeln, die da noch so rumfleuchen Das brauch ich so nicht.

    Vielen Dank für eure Antworten!
    Gruß
    Gerrit
     

  7. #7
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Nope. Dadurch, dass du die Methode weiter setFooBar() heißt wird deutlich, dass sie manipulativen Charakter hat. D.h. das ist durchaus okay.

    @deepthroat - den Link hatte ich gesucht

    REINHAUN!
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

Ähnliche Themen

  1. Klasse aus Methode aufrufen
    Von Morpheyz im Forum Java Grundlagen
    Antworten: 6
    Letzter Beitrag: 04.05.09, 13:00
  2. settimeout in eigener klasse auf eine Methode der Klasse
    Von user2580 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.04.09, 16:26
  3. Antworten: 7
    Letzter Beitrag: 11.12.07, 15:33
  4. Antworten: 8
    Letzter Beitrag: 12.04.06, 12:20
  5. Antworten: 2
    Letzter Beitrag: 06.02.06, 19:57