示例如下:
boolean noMoreData=true;
boolean checkingMethod(){
boolean noMoreData=false;
return noMoreData;
}
assert checkingMethod();
现在,取决于启用或禁用断言检测功能,此处的变量noMoreData将会具有不同的值。
------解决方案--------------------
看了一下代码,代码没有什么问题,lz也没说出困惑。
嗯,这里涉及到了assert的用法。
只好把相关的用法贴出来,希望lz能说说有啥问题吧。
断言包括:assert关键字,AssertionError类,以及在java.lang.ClassLoader中增加了几个新的有关assert方法。
assert最重要的特点是assert语句可以在运行时任意的开启或关闭,默认情况下是关闭的。
断言语句有两种合法的形式:a.assert expression1; b.assert expression1 : expression2;
其它要点
A.assert程序的编译:javac -source 1.4 TestAssert.java(提示java按1.4版本编译)
B.assert程序的运行:java –ea TestAssert 或者 java –ea:TestAssert TestAssert
其它的运行参数:java -ea:pkg0... TestAssert;java –esa;java –dsa(系统类断言),另外,还可以同时组合用。当一个命令行使用多项 -ea -da 参数时,遵循两个基本的原则:后面的参数设定会覆盖前面参数的设定,特定具体的参数设定会覆盖一般的参数设定。
C.AssertinError类是Error的直接子类,因此代表程序出现了严重的错误,这种异常通常是不需要程序员使用catch语句捕捉的。
D.使用assert的准则:assert语句的作用是保证程序内部的一致性,而不是用户与程序之间的一致性,所以不应用在保证命令行参数的正确性。可以用来保证传递给private方法参数的正确性。因为私有方法只是在类的内部被调用,因而是程序员可以控制的,我们可以预期它的状态是正确和一致的。公有方法则不适用。此外,assert语句可用于检查任何方法结束时状态的正确性,及在方法的开始检查相关的初始状态 等等。
assert语句并不构成程序正常运行逻辑的一部分,时刻记住在运行时它们可能不会被执行。
------解决方案--------------------
private static boolean enableAssert=false;//是否启用assert
static
{
assert enableAssert=true;//如果启用,则为true,否则为false
}
public static enableAssert()
{
return enableAssert;
}