Perché è meglio che Boolean.valueOf(String s)
rendimenti false
nel caso di s
essere null
, invece di restituire null
?
È una questione di opinione e (per essere sinceri) inutile chiedere ... a meno che non si stia progettando la propria lingua e le librerie di runtime. La decisione di progettazione è stata presa più di 20 anni fa e non vi è alcuna possibilità che venga modificata mentre il linguaggio è chiamato "Java".
I javadocs per Boolean.valueOf(String)
non offrono alcun indizio sul motivo per cui i progettisti l'hanno progettato in questo modo.
Tuttavia, è chiaro che il comportamento di Boolean.valueOf(String)
è incoerente al comportamento di valueOf(String)
per le altre classi involucro primitive. Ad esempio Integer.valueOf(String)
genera NumberFormatException
se l'argomento stringa è null
. Quindi è possibile che la vera spiegazione sia che la semantica Boolean.valueOf(String)
è solo un'anomalia sfortunata che è il risultato di una svista che si è verificata nella fretta di rilasciare Java 1.0.
Tuttavia, questa è la speculazione. Per una risposta reale è necessario consultare le fonti documentarie Sun/Oracle interne pertinenti (se ancora esistenti) e/o parlare con qualcuno del team Java originale.
fonte
2015-02-25 10:16:16
'Optional.ofNullable (s) .map (Boolean :: valueOf).orElse (null) 'è un'alternativa. Utile principalmente se il tuo valore è già incluso in un Opzionale. –