1

断言语句包含两部分:

assert firstPart : secondPart;

我知道firstPart必须是布尔表达式或布尔变量。但我对secondPart. 可以是什么??它可能只是作为字符串的错误消息?或者它也可以是一种方法?它应该只返回一个字符串或任何东西?

请澄清与secondPartof assert 声明相关的要求、限制和细微差别。

4

2 回答 2

1

第二部分是断言的详细信息。

jls , 14.10

AssertStatement:

assert Expression1;
assert Expression1:Expression2;

关于 Expression2 它说:

如果评估正常完成,则会创建一个 AssertionError 实例,其“详细消息”是 Expression2 的结果值。

于 2013-07-27T13:25:02.137 回答
1

从 JavaSE Programming with Assertions技术说明稍微解释一下,您的“secondPart”(称为 Expression2)“是任何具有值的表达式。(它不能是对声明为 void 的方法的调用。)”

“系统将 Expression2 的值传递给适当的 AssertionError 构造函数,该构造函数将值的字符串表示形式用作错误的详细消息。”

所以“secondPart”可以是任何有值的表达式;该值被转换为它的字符串形式,用于断言抛出的 AssertionError。

于 2013-07-27T14:01:44.957 回答