java中的断言行为?
我在第3行遇到编译错误,java中的断言有什么特殊情况吗?我不知道为什么它希望methodB()返回某种类型,这里有人能帮我吗?谢谢java中的断言行为?,java,Java,我在第3行遇到编译错误,java中的断言有什么特殊情况吗?我不知道为什么它希望methodB()返回某种类型,这里有人能帮我吗?谢谢 public class AssertTest { public void methodA(int i) { assert i >= 0 : methodB(); System.out.println(i); } public void methodB() { System.out.p
public class AssertTest {
public void methodA(int i) {
assert i >= 0 : methodB();
System.out.println(i);
}
public void methodB() {
System.out.println("The value must not be negative");
}
public static void main(String args[]) {
AssertTest test = new AssertTest();
test.methodA(-10);
}
}
很清楚:
表达式2是一个具有值的表达式。(它不能是对声明为void的方法的调用。)
使用此版本的assert语句为AssertionError提供详细消息。系统将Expression2的值传递给适当的AssertionError构造函数,该构造函数使用值的字符串表示形式作为错误的详细信息
因此,该方法的返回值用作错误消息。在您的情况下,只需返回字符串,而不是打印到系统输出
请注意,即使在编译此代码时,它也会打印-10
。默认情况下不会启用断言,因此必须启用
下次有疑问时,请先查阅文档。很清楚:
表达式2是一个具有值的表达式。(它不能是对声明为void的方法的调用。)
使用此版本的assert语句为AssertionError提供详细消息。系统将Expression2的值传递给适当的AssertionError构造函数,该构造函数使用值的字符串表示形式作为错误的详细信息
因此,该方法的返回值用作错误消息。在您的情况下,只需返回字符串,而不是打印到系统输出
请注意,即使在编译此代码时,它也会打印-10
。默认情况下不会启用断言,因此必须启用
下次有疑问时,请先查阅文档
断言语句的第二种形式是:
assert Expression1 : Expression2 ;
assert Expression1 : Expression2 ;
其中:
* Expression1 is a boolean expression.
* Expression2 is an expression that has a value. **(It cannot be an invocation of a method that is declared void.)**
表达式1是一个布尔表达式。表达式2是一个
有价值。(它不能是对已声明方法的调用
无效。)
基本上,Expression2
必须返回一个值,而不是void
断言语句的第二种形式是:
assert Expression1 : Expression2 ;
assert Expression1 : Expression2 ;
其中:
* Expression1 is a boolean expression.
* Expression2 is an expression that has a value. **(It cannot be an invocation of a method that is declared void.)**
表达式1是一个布尔表达式。表达式2是一个
有价值。(它不能是对已声明方法的调用
无效。)
基本上,
Expression2
必须返回一个值,而不是void
您的方法应该有一个返回类型
以下是该链接的相关信息:
断言语句的第二种形式是:
assert Expression1 : Expression2 ;
assert Expression1 : Expression2 ;
其中:
* Expression1 is a boolean expression.
* Expression2 is an expression that has a value. **(It cannot be an invocation of a method that is declared void.)**
您的方法应该有一个返回类型 以下是该链接的相关信息: 断言语句的第二种形式是:
assert Expression1 : Expression2 ;
assert Expression1 : Expression2 ;
其中:
* Expression1 is a boolean expression.
* Expression2 is an expression that has a value. **(It cannot be an invocation of a method that is declared void.)**
只需将错误消息直接放在
assert
语句中,就更简单,可读性也更高:
assert (i >= 0) : "AssertTest: The value must not be negative.";
Java系统将在assert启动时显示消息。只需将错误消息直接放在
assert
语句中,就更简单、可读性更强了:
assert (i >= 0) : "AssertTest: The value must not be negative.";
当断言触发时,Java系统将显示消息。@Carlos极好的建议。@Carlos极好的建议。