Scrittura esplicita del costruttore vuoto predefinito

4

Ha senso scrivere un costruttore predefinito quando non ha argomenti, corpo vuoto e nessun altro costruttore esiste?

L'unico vantaggio che posso pensare è la riduzione del rischio di dimenticare di aggiungere il costruttore predefinito quando ne viene creato un altro. Ma questo errore verrebbe comunque visualizzato se il costruttore predefinito viene effettivamente utilizzato (almeno se la classe è "interna" e non in una libreria) e se non viene utilizzata può essere omessa (yagni).

Quali vantaggi può avere?

    
posta superM 10.01.2014 - 12:56
fonte

3 risposte

6

Non vi è alcun vantaggio a meno che si stia interagendo con uno strumento o un framework che rilevi i metodi dichiarati e i costruttori della classe tramite la reflection e quindi faccia silenziosamente cose diverse a seconda che trovi o meno il costruttore predefinito. (Mi sembra di ricordare che le prime versioni di Spring o Hibernate hanno fatto questo.)

Altrimenti, come dici tu, qualsiasi incoerenza verrebbe contrassegnata dal compilatore, quindi non ha senso dichiarare cose che sarebbero comunque generate automaticamente.

    
risposta data 10.01.2014 - 12:58
fonte
4

L'unico vantaggio che posso prevedere è che puoi aggiungere documentazione specifica a questo costruttore, ad esempio per descrivere come gestire l'oggetto dopo l'istanziazione, ecc ...

In ogni altro caso, non penso che sia utile.

    
risposta data 10.01.2014 - 12:58
fonte
4

But this error would show up anyway if the default constructor is actually being used (at least in the class is "internal" and not in a library), and if it isn't used it can be omitted (yagni).

Deserializzazione Xml. Sì, l'errore si presentava, ma piuttosto tardi - come eccezione in runtime.

    
risposta data 10.01.2014 - 13:10
fonte

Leggi altre domande sui tag