私はこのようなものを探しています:
assertSafe(Integer.parseInt(val))
出来ますか?
ありがとう!
assertSafe で例外をキャッチして失敗させたいと思いませんか? 残念ながら、これは Java では不可能です (少なくとも現在は)。一般に、すべてのパラメーターは、メソッドに渡される前に常に評価する必要があります。
ただし、ヘルパー メソッドを作成することもできます。
public static void assertSafeInt(String val) {
try {
Integer.parseInt(val);
} catch (NumberFormatException e) {
throw new AssertionError(val + " is not an int");
}
}
使用法:
assertSafeInt(val);
あなたが望むほど一般的ではありませんか?ラムダを使用したJava 8は少し役立つかもしれませんが、構文があなたが望むほどきれいになるとは思いません.
Scala には「名前による呼び出し」と呼ばれるものがあり、実際にはコード ブロックを関数として渡します。Scala で assertSafe を作成するのは簡単です。
たとえば、JSON 文字列から値を抽出するときの型チェック - なぜすぐに利用できないのだろうかと思います。
Scanner を使用する場合は、hasNextInt()、hasNextDouble()、または hasNext() => String でこれをサポートします。
通常、期待するタイプはわかっていますが、そうでない場合は、読んだときにこれを解析します。として欲しい文字列を読み取ることは避けますがint
、これは非効率的です。;)