1.
pubblica
interfaccia
AutoCloseable {
. 2
vuoto
close ()
lancia
un'eccezione;
3.
}
Dichiara un metodo close (), che viene richiamato automaticamente gli oggetti gestiti dal try-con-le risorse. Anche se Java 7 classi di risorse implementano questa interfaccia, un sacco di tempo le librerie che usi non perché la libreria non viene aggiornato utilizzare l'interfaccia AutoCloseable o il progetto non può semplicemente aggiornare ad una versione più recente. maggior parte delle volte questo è facile da risolvere. Proprio sottoclasse la risorsa che dovrebbe essere in grado di partecipare al try-con-le risorse. Prendere la ITextRenderer (formare il progetto Flying Saucer) come esempio.Quando finito di lavorare con il ITextRenderer, il metodo finishPDF () dovrebbe essere chiamato.Normalmente si dovrebbe fare in un blocco finally. Con la creazione di una nuova classe che si estende da ITextRenderer e implementando l'interfaccia AutoCloseable questa classe può partecipare a gestione automatica delle risorse. Il AutoCloseableITextRenderer assomiglia a questo:
pubblici
classe
AutoCloseableITextRenderer
estende
ITextRenderer
implementa
AutoCloseable {
2.
@ Override
3.
pubblici
vuoto
close () {
. 4
Super
. finishPDF ();
5.
}
6.
}
Estendere la classe originale ha più senso dal momento che la sottoclasse è un ITextRenderer. Si usa la composizione se la classe non può essere estesa perché è definitiva. Ed è così che si dovrebbe utilizzare:
1.
provare
(
finale
AutoCloseableITextRenderer iTextRenderer =
new
AutoCloseableITextRenderer ()) {
. 2
ByteArrayOutputStream fuori;
/ / contiene i dati che devono essere convertiti in PDF, non è riportato.
3.
4.
iTextRenderer.setDocumentFromString (
new
String (out.toByteArray ()));
. 5
iTextRenderer.layout ();
6.
iTextRenderer.createPDF (pdfOutputStream);
. 7
pdfOutputStream.flush ();
8.
}
Questo è tutto. Vi prego di notare che non elimino una deroga al metodo close () nel AutoCloseableITextRenderer. Il Javadoc dell'interfaccia AutoCloseable dice il seguente su questa:
Anche se questo metodo di interfaccia viene dichiarata a buttare {@ Codice di eccezione}, gli esecutori sono fortemente incoraggiati a dichiarare implementazioni concrete del metodo {@ code vicino} per generare eccezioni più specifiche, o di gettare non fa eccezione a tutti, se l'operazione di chiusura non può fallire.
Corso Java - Corsi programmazione Java - Corso programmazione Android - Certificazione Java - Corsi Java - Corso Java Avanzato