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?