2013-05-29 18 views
6

Io uso il modello di un bel po ':costruttori Java modello

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; 
    } 

Questo è davvero una grande quantità di testo standard per qualcosa di così semplice. Stavo pensando ad una generica fabbrica di oggetti per fare questo con l'introspezione, ma questo si sente molto male (casi speciali, ereditarietà e problemi di velocità). Guice potrebbe essere usato e il costruttore saltato del tutto, ma poi la creazione manuale degli oggetti sarà brutta.

È qualcosa con cui dovrò convivere in Java o c'è un modo per evitare questo boilerplate?

+0

Non so bene quale sia la tua domanda. – lichengwu

+2

È un sacco di codice standard, ma ancora una volta, Eclipse può solo generare questo in un batter d'occhio :) –

+2

Sì, viviamo con questo tipo di piastra in Java. –

risposta

5

Provare a utilizzare Lombok (http://projectlombok.org/)

È possibile generare getter, setter e costruttori con semplici annotazioni.

+0

La demo è impressionante, ma sto solo aspettando di trovare tutte le insidie ​​:) –

+4

Mi sono sempre chiesto, che senso ha usare getter e setter per membri privati ​​se non si fa assolutamente nessuna verifica? Perché non avere solo membri pubblici (ancor più quando i campi sono definitivi)? Capisco che stiate separando l'implementazione dall'interfaccia, ma se setter e getter sono direttamente collegati ai nomi delle variabili dei membri, allora questo tipo sconfigge lo scopo, no? – Supericy

+2

@Supericy Assolutamente d'accordo su quello. Ho sostenuto questa posizione più volte in una risposta SO, di solito finita con voti negativi. Le loro argomentazioni: tutte le cazzate standard sulla "convalida" che non accade mai nella realtà, sottoclassi "sovrascrivendo" un setter, ecc. –