JavaRush /جاوا بلاگ /Random-SD /جاوا 7 ڪوشش ڪريو وسيلن سان
DarthVictor
سطح

جاوا 7 ڪوشش ڪريو وسيلن سان

گروپ ۾ شايع ٿيل
نسخو 7 سان شروع ڪندي، جاوا وسيلن جو بهتر انتظام پيش ڪري ٿو جيڪي انهن سان ڪم ڪرڻ ختم ٿيڻ تي بند ٿيڻ گهرجن. اهڙن وسيلن ۾ شامل آهن، مثال طور، فائلون، اسٽريم، ڊيٽابيس ڪنيڪشن ۽ ساکٽ. هي مقصد هڪ خاص ٻوليءَ جي تعمير جي ڪوشش سان وسيلن سان پورو ڪيو ويندو آهي. ڪم ڪرڻ لاء هن خودڪار بند ڪرڻ لاء، هڪ خاص انٽرفيس ٺاهي وئي آهي AutoCloseable. جاوا 7 ڪوشش ڪريو وسيلن سان - 1جاوا 7 ۾، سڀئي وسيلا ڪلاس هن انٽرفيس کي لاڳو ڪن ٿا. ان جو دستخط هن طرح نظر اچي ٿو:
public interface AutoCloseable {
    void close() throws Exception;
}
انٽرفيس هڪ طريقو بيان ڪري ٿو close()جيڪو خودڪار طور تي سڏيو ويندو آهي انهن شين تي جيڪو تعمير ڪيو ويو آهي try-with-resources. جيتوڻيڪ جاوا 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()سگھي ته استثناءَ کي ڪڏھن به نه اڇلايو وڃي. ناڪام ٿيڻ.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION