lunedì 15 luglio 2013

Java 7 provare-con-le risorse

Java 7 fornisce una migliore gestione delle risorse per le risorse che devono essere chiusi quando finito di lavorare con, per esempio i file, flussi di connessione di database e prese. Questo costrutto lingua si chiama istruzione try-con-le risorse. Il meccanismo che rende questo lavoro è denominata interfaccia AutoCloseable. Le 7 classi di risorse Java tutto implementano questa interfaccia. La firma di questa interfaccia si presenta così:


1.pubblica interfaccia AutoCloseable {
. 2vuoto 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:





visualizzare il codice sorgente1.
pubblici classe AutoCloseableITextRenderer estende ITextRenderer implementaAutoCloseable {
2.@ Override
3.pubblici vuoto close () {
. 4Super . 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 = newAutoCloseableITextRenderer ()) {
. 2ByteArrayOutputStream fuori; / / contiene i dati che devono essere convertiti in PDF, non è riportato.
3. 
4.iTextRenderer.setDocumentFromString ( new String (out.toByteArray ()));
. 5iTextRenderer.layout ();
6.iTextRenderer.createPDF (pdfOutputStream);
. 7pdfOutputStream.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