试用期java_Java 7试用资源
試用期java
Java 7為完成使用后需要關(guān)閉的資源(例如文件,流,數(shù)據(jù)庫(kù)連接和套接字)提供了更好的資源管理。 這種語(yǔ)言構(gòu)造稱為try-with-resources語(yǔ)句。 完成這項(xiàng)工作的機(jī)制稱為AutoCloseable接口。 Java 7資源類均實(shí)現(xiàn)此接口。 該接口的簽名如下所示:
它聲明了一個(gè)方法close(),該方法在try-with-resources語(yǔ)句管理的對(duì)象上自動(dòng)調(diào)用。
盡管Java 7資源類實(shí)現(xiàn)了此接口,但是您使用的庫(kù)在很多時(shí)候都不會(huì)這樣做,因?yàn)閹?kù)沒有更新為使用AutoCloseable接口,或者項(xiàng)目無(wú)法簡(jiǎn)單地更新為較新的版本。
在大多數(shù)情況下,這很容易解決。 只是將應(yīng)該能夠參與try-with-resources語(yǔ)句的資源子類化。 以ITextRenderer(形成“飛碟”項(xiàng)目)為例。 使用ITextRenderer完成工作后,應(yīng)調(diào)用finishPDF()方法。 通常,您將在finally塊中執(zhí)行此操作。 通過創(chuàng)建一個(gè)從ITextRenderer擴(kuò)展的新類并實(shí)現(xiàn)AutoCloseable接口,該類可以參與自動(dòng)資源管理。 AutoCloseableITextRenderer如下所示:
public class AutoCloseableITextRenderer extends ITextRenderer implements AutoCloseable {@Overridepublic void close() {super.finishPDF();} }擴(kuò)展原始類最有意義,因?yàn)樽宇愂?ITextRenderer。 如果由于類是最終類而無(wú)法擴(kuò)展,則可以使用composition。
這就是您將如何使用它:
try (final AutoCloseableITextRenderer iTextRenderer = new AutoCloseableITextRenderer()) {ByteArrayOutputStream out; // contains the data to be converted to PDF, not shown here.iTextRenderer.setDocumentFromString(new String(out.toByteArray()));iTextRenderer.layout();iTextRenderer.createPDF(pdfOutputStream);pdfOutputStream.flush();}就這樣。 請(qǐng)注意,我沒有從AutoCloseableITextRenderer中的close()方法引發(fā)異常。 AutoCloseable接口的Javadoc對(duì)此說(shuō)明如下:
盡管聲明此接口方法引發(fā){@code Exception},但強(qiáng)烈建議實(shí)現(xiàn)者聲明{@code close}方法的具體實(shí)現(xiàn)以引發(fā)更具體的異常,或者如果close操作不會(huì)失敗則根本不引發(fā)異常。
翻譯自: https://www.javacodegeeks.com/2013/07/java-7-try-with-resources.html
試用期java
總結(jié)
以上是生活随笔為你收集整理的试用期java_Java 7试用资源的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进口肉类备案(肉制品备案)
- 下一篇: java erlang_Java开发人员