Il linguaggio Java Specification specifica che si è chiuso solo se non null, nella sezione 14.20.3. try-with-resources:
Una risorsa viene chiusa solo se inizializzata su un valore non nullo.
Questo può effettivamente essere utile, quando una risorsa potrebbe presentarsi a volte e in assenza di altre.
Ad esempio, supponiamo che sia possibile o meno disporre di un proxy chiudibile per alcuni sistemi di registrazione remota.
try (IRemoteLogger remoteLogger = getRemoteLoggerMaybe()) {
if (null != remoteLogger) {
...
}
}
Se il riferimento non è nullo, il proxy del logger remoto viene chiuso, come previsto. Ma se il riferimento è nullo, non viene effettuato alcun tentativo di chiamare close() su di esso, non viene generata alcuna NullPointerException e il codice funziona ancora.
fonte
2016-02-12 21:07:18
Haha, il caso d'uso che hai appena aggiunto è quello che mi ha fatto fare la domanda in primo luogo! Grazie! – flakes
Niente da fare! È selvaggio L'ho appena inventato. –
Bene ,. diversi tipi di variabili, ma stessa struttura: p – flakes