我正在寻找这样的东西:
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);
不像你想的那么笼统?带有 lambda 的 Java 8 可能会有所帮助,但我认为语法不会像您希望的那样干净。
Scala 有一个叫做“按名称调用”的东西,它实际上是将代码块作为函数传递。在 Scala 中创建 assertSafe 很容易。
类型检查,例如,从 JSON 字符串中提取值时 - 我想知道为什么它不容易获得。
如果你使用 Scanner,它支持 hasNextInt()、hasNextDouble() 或 hasNext() => String。
通常,您知道预期的类型,如果您不了解,则在阅读时对其进行解析。我会避免读取我想要的字符串int
,这是低效的。;)