1.はじめに
Javaの7は、try--リソースとは、tryブロックで使用されるリソースを宣言すると、リソースを閉じますブロックの実行を確保することを可能にするためのサポートを導入しました。
⚠️:AutoCloseableリソース文は、インタフェースを実装する必要があります。
2.のtry-と、リソースを使用します
簡単に言えば、自動的にシャットダウンするように、あなたは宣言しなければならないと初期化リソースは次のように、試してみてください。
try (PrintWriter writer = new PrintWriter(new File("test.txt"))) {
writer.println("Hello World");
}
3.のtry-リソース-との代わりのtry-catch-最後に
代わりに、伝統的で退屈なのシンプルな明確なのtry-と資源のtry-catch-最後にブロック。
:典型的な最初のtry-catch-finallyブロックされ、その後、新しい方法、のtry-と、リソースブロックと同等のものを使用して - 私たちは、次のコードサンプルを比較してみましょう
Scanner scanner = null;
try {
scanner = new Scanner(new File("test.txt"));
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (scanner != null) {
scanner.close();
}
}
これは試し-と資源の超シンプルなソリューションを使用して行われます。
try (Scanner scanner = new Scanner(new File("test.txt"))) {
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
あなたも愛?
4.のtry-と資源の資源を複数有します、
セミコロンは、複数の資源で区切って、複数のリソースは、try-と、リソースブロック宣言することができます。
try (Scanner scanner = new Scanner(new File("testRead.txt"));
PrintWriter writer = new PrintWriter(new File("testWrite.txt"))) {
while (scanner.hasNext()) {
writer.print(scanner.nextLine());
}
}
カスタム実装インタフェース資源AutoCloseable
try-と、リソースによってカスタムリソースを構築するには、正しく、処理され、このようなAutoCloseable閉鎖可能かのインタフェースを実装する必要があり、closeメソッドをカバーしてブロック:
public class MyResource implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("Closed MyResource");
}
}
6.リソース閉鎖シーケンス
すべてのリソースの第一は、最後に閉じられ、(作成)に定義されます。例で見てみましょう:
リソース1:
public class AutoCloseableResourcesFirst implements AutoCloseable {
public AutoCloseableResourcesFirst() {
System.out.println("Constructor -> AutoCloseableResources_First");
}
public void doSomething() {
System.out.println("Something -> AutoCloseableResources_First");
}
@Override
public void close() throws Exception {
System.out.println("Closed AutoCloseableResources_First");
}
}
リソース2:
public class AutoCloseableResourcesSecond implements AutoCloseable {
public AutoCloseableResourcesSecond() {
System.out.println("Constructor -> AutoCloseableResources_Second");
}
public void doSomething() {
System.out.println("Something -> AutoCloseableResources_Second");
}
@Override
public void close() throws Exception {
System.out.println("Closed AutoCloseableResources_Second");
}
}
リソースの使用:
private void orderOfClosingResources() throws Exception {
try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst();
AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) {
af.doSomething();
as.doSomething();
}
}
出力:
コンストラクタ- > AutoCloseableResources_First
コンストラクタ- > AutoCloseableResources_Secondの
何か- > AutoCloseableResources_Firstの
何か- > AutoCloseableResources_Second
クローズAutoCloseableResources_Second
クローズAutoCloseableResources_First
7.catch&ついに
まだキャッチし、finallyブロックを含むことができ、リソースをブロックしてみてください、それは従来のtryブロックと同じように動作します。
8.おわり
この記事では、我々は試し--リソースとを使用する方法について説明し、どのようにトライして、リソースを使用しようと、キャッチを交換し、最終的に、どのようにカスタムAutoCloseableリソースを構築し、リソースを閉じるために理解すること。
作者への世間の注目いいえ、元/品質技術記事のすべての種類をプッシュ⬇️