AutoClosable
インターフェースは にあり、「java.lang
自動的に」閉じる必要があるリソースに適用することを目的としています ( try-with-resources )。AutoClosable
IO 関連のリソースであってはなりません。したがって、インターフェースは具体的な例外を想定することはできません。
一方、aはfor io リソースであるためClosable
、java.io
and extendsにあります。したがって、クローズ時に s をスローできることを宣言します。AutoClosable
Closable
AutoClosable
IOException
たとえば... ajava.sql.Connection
はAutoClosable
close メソッド throwsSQLException
であり、 aSQLException
は ではないためIOException
です。インメモリ DB について考えてみると、SQL 接続を閉じてもIOException
.
編集
もう 1 つの疑問に答えました。つまり、なぜ AutoClosable が java.lang パッケージの下に保持されているのかということです。ありがとう。
Java 1.7 で言語機能としてtry-with-resourcesjava.lang
が導入されたため、配置されていると思います。したがってjava.lang