Ho letto qualcosa sullo scopo di Optional
(sfortunatamente non ricordo dove) in Java 8 e sono rimasto sorpreso che lo scrittore non abbia menzionato l'uso di uno Optional
come attributo in una classe.È consigliabile utilizzare Opzionale come attributo in una classe?
Dal momento che sto usando gli optionals piuttosto frequentemente nelle mie lezioni, mi chiedevo se questa fosse una buona pratica. O potrei usare semplicemente gli attributi normali, che restituiscono null
quando non sono impostati?
Nota: Può sembrare la mia domanda è basata opinione, ma ho la sensazione utilizzando Optional
in una classe è in realtà non è il modo di andare (dopo aver letto il post citato). Tuttavia, mi piace usarlo e non riesco a trovare alcun svantaggio di usarlo.
Esempio
desidero dare un esempio per chiarire. Ho una classe Transaction
, che è costruito in questo modo:
public class Transaction {
private Optional<Customer> = Optional.empty();
....
vs
public class Transaction {
private Customer = null;
....
Durante il controllo su un Customer
, penso che sia più logico utilizzare transaction.getCustomer().isPresent()
di transaction.getCustomer() != null
. Secondo me il primo codice è più pulito del secondo.
@AdamSiemion Stiamo parlando di 'Optional' di Guava o' Optional' di Java 8 qui? – Jesper
@AdamSiemion Grazie per il link! Non sono così esperto, quindi non sapevo che Guava lo avesse già. Tuttavia, la ragione principale menzionata è che "Optional" ha tre possibilità: presente, assente e nulla. Java 8 è così assente, quindi quell'argomento non è più valido .. – bashoogzaad
@bashoogzaad Se ci sono tre (null, assente, presente) o due opzioni (null/empty, present) non cambia lo scopo di 'Optional' . –