第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java SE 9:Try-With-Resources Improvements

標(biāo)簽:
Java

Java SE 9:Try-With-Resources Improvements


目录[ 隐藏 ]

发布简要目录:

  • 介绍

  • Java SE 7:资源尝试基础知识

  • Java SE 7:资源试用规则

  • Java SE 9:资源试用改进

介绍

Oracle Corporation将于2017年3月底发布Java新版本:Java SE 9.所以,我想提供一系列有关Java SE 9新功能的帖子。这是我在这个系列中的第八篇文章。

在这篇文章中,我们将讨论Java SE 9中对Try-With-Resources的一些改进。让我们现在开始探索该构造。

Java SE 7:资源尝试基础知识

Java SE 7引入了一个新的构造:Try-With-Resources语句,以便更好地进行异常处理。如果没有这个结构,开发人员必须编写大量冗余和丑陋的代码。如果开发人员忘记了正确关闭资源,我们将在应用程序中遇到资源泄漏问题。

这个新功能的主要目标是:

  • 句法糖

避免写一些提取catch / finally块。

更好的可读代码

无需进行空检查

无需检查资源引用是指引用对象还是null。

更好的资源管理

ARM(自动资源管理)

避免内存泄漏

试用资源示例-1: -

void testARM_Before_Java9() throws IOException{
 BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt")); try (BufferedReader reader2 = reader1) {
   System.out.println(reader2.readLine());
 }}

这里我们创建了一个实用程序方法,它创建一个BufferedReader对象来读取文件的内容。如果我们观察上面的代码片段,即使我们有reader1引用BufferedReader对象,我们也应该创建一个重复的“reader2”来在Try-With-Resources中使用它。这是Java SE 7或8版本中的一个小错误或问题。

我们不能在Try-With-Resources语句的try()块中使用任何资源(在Try-With-Resources之外声明)。

以下代码在Java SE 7或8版本中无效。它会抛出编译时错误。

试用资源示例-2: -

void testARM_Before_Java9() throws IOException{
 BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt")); try (reader1) {
   System.out.println(reader1.readLine());
 }}

注意: -
如果您想了解有关此组件的更多信息,请阅读本教程:Java SE 7:Try-with-Resources

Java SE 7:资源试用规则

在Java SE 7或8版本中,我们应遵循这些规则以使用Try-With-Resources语句进行自动资源管理(ARM)

  • 任何资源(预定义的Java API类或用户定义的类)都必须实现java.lang.AutoCloseable。

  • 资源对象必须引用最终或有效的最终变量

  • 如果已经在Try-With-Resources语句之外声明了Resource,我们应该使用局部变量重新引用(如上面的Example-1代码所示)

  • 新创建的局部变量在Try-With-Resources语句中有效。

Java SE 9:资源试用改进

Java SE 9为Try-With-Resources语句提供了一些改进。正如我们在前面部分中讨论的那样,Java SE 7或8版本对此语句有一个小问题或错误。

在Java SE 9中,如果我们有一个资源已经在Try-With-Resource语句之外声明为final或者有效的final,那么我们不需要声明一个局部变量。我们可以在Try-With-Resource Statement中使用以前创建的变量而不会出现任何问题,如下所示:

试用资源示例-3: -

void testARM_Java9() throws IOException{
 BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt")); try (reader1) {
   System.out.println(reader1.readLine());
 }}

此示例是Java SE 9的有效代码。我们不创建另一个局部变量,如reader2,以引用reader1,如Example-1所示。让我们在Java SE 9 REPL中执行这两个示例来测试它们。

使用Java SE 9 REPL的测试示例-1: -

jshell> void testARM_Before_Java9() throws IOException{
   ...> BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt"));
   ...> try (BufferedReader reader2 = reader1) {
   ...> System.out.println(reader2.readLine());
   ...> }
   ...> }|  created method testARM_Before_Java9()

jshell> testARM_Before_Java9()
journaldev

使用Java SE 9 REPL的测试示例-3: -

jshell> void testARM_Java9() throws IOException{
   ...> BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt"));
   ...> try (reader1) {
   ...> System.out.println(reader1.readLine());
   ...> }
   ...> }|  created method testARM_Java9()

jshell> testARM_Java9()
journaldev

这就是“Java SE 9:尝试资源改进”的新功能。我们将在以后的帖子中讨论更多Java SE 9新功能。

如果您喜欢我的帖子或有任何问题/建议/类型错误,请给我发表评论。

感谢您阅读我的教程。

快乐的Java SE 9学习!



點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消