2013-05-29 9 views
6

Ich benutze das Muster ziemlich viel:Java Konstrukteuren Muster

class Blah 
    int a; 
    double b; 
    String c; 
    Date d; 

    public Blah(int a, double b, String c, Date d) { 
     super(); // possibly 
     this.a = a; 
     this.b = b; 
     this.c = c; 
     this.d = d; 
    } 

Dies ist in der Tat sehr vielen Textvorschlag für etwas so einfach. Ich dachte an eine generische Objektfabrik, um dies mit Introspektion zu tun, aber das fühlt sich sehr böse an (Spezialfälle, Vererbung und Geschwindigkeitsprobleme). Guice könnte verwendet werden und der Konstruktor würde komplett übersprungen, aber dann wird die manuelle Objekterzeugung hässlich.

Ist das etwas, mit dem ich in Java leben muss, oder gibt es eine Möglichkeit, diesen Standard zu vermeiden?

+0

ich nicht ganz klar, was ist Ihre Frage. – lichengwu

+2

Es ist in der Tat eine Menge Standard-Code, aber wiederum kann Eclipse nur im Handumdrehen erzeugen :) –

+2

Ja, wir leben mit dieser Art von Boilerplate in Java. –

Antwort

5

Versuchen Sie es mit Lombok (http://projectlombok.org/)

Sie können Getter, Setter und Konstrukteure mit bloßen Anmerkungen erzeugen.

+0

Die Demo ist beeindruckend, aber ich warte nur, um über alle Fallstricke zu finden :) –

+4

Ich habe mich immer gefragt, was ist der Sinn der Verwendung von Getter und Setter für private Mitglieder, wenn Sie absolut keine Überprüfung tun? Warum haben Sie nicht einfach öffentliche Mitglieder (noch mehr, wenn die Felder auch endgültig sind)? Ich bekomme, dass Sie die Implementierung von der Schnittstelle trennen, aber wenn die Setter und Getter direkt mit den Namen der Mitgliedsvariablen verknüpft sind, dann besiegt das den Zweck, nein? – Supericy

+2

@Supericy Absolut stimmen Sie dem überein. Ich habe diese Position mehrmals in einer SO-Antwort befürwortet, die normalerweise mit negativen Stimmen endete. Ihre Argumente: all das Standardmüll über "Validierung", das in der Realität nie passiert, Subklassen, die einen Setter "überschreiben" usw. –