try-with-resouces(JavaSE 7~)
- try句で宣言したリソースは自動でクローズされる
- リソースはAutoCloseableである必要がある
- I/Oストリーム,StreamAPI,JDBC API(Connection, Statement)
- リソースは実質的にfinalも指定可能
- リソースはAutoCloseableである必要がある
- リソースをクローズするタイミング
- finally句の処理前
- 複数リソースの場合はオープンしたときの逆順でクローズ
実質的 final で思い出したいもの
• try-with-resources (Java SE 9)
• 無名クラス (Java SE 8)
• ラムダ式 (Java SE 8)
これらのコードからアクセス可能な変数は実質的
final である必要がある。(実質的 final でなければ
コンパイルエラーになる)
class MyResource implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("MyResource#closed()");
}
}
java.io.Closeable インタフェース (AutoCloseable のサブタイプ)
を実装する場合、オーバーライドするメソッドは
public void close() throws IOException { }
アサーション
- 処理中で成立すべき条件を検証し条件違反を自動で検知する仕組み
- アサーションの構文
assert exp1;
assert exp1 : exp2;
exp1 ... 検証されるべき条件
exp2 ... 検証エラー時のメッセージ
(AssertionErrorのコンストラクタ引数)
*アサーションの有効化
$ java –ea Test