关于java断言的一个问题:其他类中的断言在public类中无法实现?
问各位一个关于java断言的问题
这个程序(保存为CalorieCounter.java文件)
class A
{
boolean fun(int i)
{
if(i>0)
{
try
{
assert i<0:"i<0";
System.out.println("111111111111111111111");
}
catch (AssertionError nfe)
{
System.out.println("2222222222222 "+nfe.getMessage());
}
return true;
}
else
{
try
{
assert i>0:"i>0";
System.out.println("3333333333333333333333");
}
catch (AssertionError nfe)
{
System.out.println("4444444444444 "+nfe.getMessage());
}
return false;
}
}
}
public class CalorieCounter
{
public static void main(String[] arguments)
{
A ca=new A();
try
{
assert ca.fun(10) : "7th fun(10) <0";
System.out.println("55555555555555555555");
}
catch (AssertionError nfe)
{
System.out.println(" assert fun(10) <0 6666666666666666666 "+nfe.getMessage());
}
try
{
assert ca.fun(-10);
System.out.println("7777777777777777777777");
}
catch (AssertionError nfe)
{
System.out.println(" assert fun(-10) <0 8888888888888888888 "+nfe.getMessage());
}
}
}
运行的时候这样java -ea:A CalorieCounter
以此来触发A类中的断言
但是运行结果是
55555555555555555555
7777777777777777777777
为什么会导致A类中的fun函数无法调用???
请教各位
[解决办法]
我也不知道文档是怎么说的 但是从测试列子来看的话 如果你不开启断言 那句断言是直接忽略的 你直接用调用函数 因为你开启了A类断言 所以断言是执行的 然后你没开启CalorieCounter断言 所有CalorieCounter类里的断言直接被忽略了 以至于A类的函数没执行
你可以试试java -ea:A -ea:CalorieCounter CalorieCounter