JavaRush /Java блогу /Random-KY /Java 7 ресурстар менен аракет кылуу
DarthVictor
Деңгээл

Java 7 ресурстар менен аракет кылуу

Группада жарыяланган
7-versionсынан баштап, Java ресурстарды жакшыртылган башкарууну сунуштайт, алар менен иштөө аяктагандан кийин жабылышы керек. Мындай ресурстарга, мисалы, файлдар, агымдар, маалыматтар базасынын байланыштары жана розеткалары кирет. Бул максатты атайын тилдик түзүлүш менен сынап көргүлө. Бул автоматтык түрдө жабылышы үчүн атайын интерфейс түзүлдү AutoCloseable. Java 7 ресурстар менен аракет кылуу - 1Java 7де бардык ресурс класстары бул интерфейсти ишке ашырат. Анын кол тамгасы мындай көрүнөт:
public interface AutoCloseable {
    void close() throws Exception;
}
Интерфейс close()конструкция тейлеген an objectтерде автоматтык түрдө чакырылган ыкманы жарыялайт try-with-resources. Java 7деги ресурстук класстар бул интерфейсти ишке ашырса да, сиз колдонгон китепканалардын көбү жок, себеби китепкана AutoCloseable интерфейси менен иштөө үчүн жаңыртыла элек же сизде китепкананы жаңыртуу мүмкүнчүлүгү жок. Көпчүлүк учурларда бул оңой эле чечилет. катышууга тийиш болгон ресурс классын мурастап алыңыз try-with-resources. ITextRendererМисалы (Учуучу тарелка долбоорунан) алалы . менен иштөө аяктагандан кийин ITextRenderer, методду чакыруу керек finishPDF(). Адатта сиз муну блокто жасамаксыз finally. ITextRendererБирок сиз интерфейсти кеңейтүүчү жана ишке ашырган жаңы классты түзгөнүңүздө AutoCloseable, аны try-with-resources. Жаңы класс AutoCloseableITextRendererтөмөнкүдөй болот:
public class AutoCloseableITextRenderer extends ITextRenderer implements AutoCloseable {
    @Override
    public void close() {
        super.finishPDF();
    }
}
Түпнуска классты тукумга узартуу эң акылга сыярлык чечим, анткени жаңы класс дагы эле ITextRenderer. Баштапкы класс катары жарыяланган учурда final, курамы колдонулушу керек. Жана бул колдонуу кандай болот:
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();
        }
Баары болду. Сураныч , мен close(). AutoCloseableITextRendererИнтерфейстеги Javadoc AutoCloseableбул тууралуу төмөнкүлөрдү айтат: Интерфейс ыкмасы өзгөчө учурларды таштоо үчүн жарыяланганына карабастан , бул ыкманы ишке ашыруучуларга методду ишке ашырууда өзгөчө өзгөчөлүк класстарын колдонуу же эгер метод мүмкүн болбосо Exception, өзгөчөлүктү такыр таштабоо сунушталат. close()ийгorксиз.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION