读书人

关于java断言的一个有关问题:其他类中

发布时间: 2013-06-25 23:45:42 作者: rapoo

关于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函数无法调用???
请教各位


[解决办法]

引用:
上条留言我都是这样执行的

运行的时候这样java -ea:A CalorieCounter

我也不知道文档是怎么说的 但是从测试列子来看的话 如果你不开启断言 那句断言是直接忽略的 你直接用调用函数 因为你开启了A类断言 所以断言是执行的 然后你没开启CalorieCounter断言 所有CalorieCounter类里的断言直接被忽略了 以至于A类的函数没执行
你可以试试java -ea:A -ea:CalorieCounter CalorieCounter

读书人网 >J2EE开发

热点推荐