Mi piace usare final
variabili quando possibile. Spesso queste variabili devono essere chiuse in seguito. Nota che attualmente sto lavorando su Java 6 quindi non c'è l'interfaccia closeable
, ma lo stesso vale per le versioni successive di Java. Ad esempio:
final InputStream in;
try{
in=new InputStream(...);
//...
}catch(...) {}
finally{
in.close(); //whoops!
}
A quel punto l'IDE farà notare che in
potrebbe non essere inizializzato. Disporre l'istruzione close
in un if like so
if(in!=null)
in.close();
non funziona neanche, nonostante null
sia il valore predefinito per gli oggetti non inizializzati. La mia soluzione finora è dimenticare di dichiararli final
in primo luogo e inizializzarli come null
alla dichiarazione.
Un'altra soluzione consiste nel posizionare la dichiarazione e l'istruzione close
nel blocco try
:
try{
final InputStream in=new InputStream(...);
//...
in.close();
}catch(InputStreamRelatedException) {};
che lascerebbe in
open (?) in caso di eccezione correlata a InputStream
.
Qual è il metodo preferito?