第3章 ラムダ式を使ったプログラミング : 問題 3 : アサーション
問題 3
Java 1.4 は、予約語assert
でもって Java 言語にアサーションを追加した。
なぜアサーションは、ライブラリの機能として提供されなかったのか?
解答
当時の Java では遅延実行を実現できなかったため。
メソッド呼び出しにすると、呼び出し時点で条件式を評価せざるを得ない。
さらに問題
Java 8 ではライブラリの機能として実装できるか?
解答
できる
以下がその例である。
ただし、アサーションの有効/無効は、システムプロパティjava.enable.assertions
で切り替えることにしてある。
public static void assert(BooleanSupplier condition) { if (Boolean.getBoolean("java.enable.assertions")) { if (!condition.getAsBoolean()) { throw new AssertionError(); } } }