斷言對於大型複雜程序或可靠性要求極高的程序來說有很大作用。通過斷言程序員能快速地排查出問題。一個斷言通常有兩個參數:一個是描述假設條件爲真情況的布爾表達式和需要爲假是的提示或輸出信息。
斷言可以用於以下情況:
1、輸入參數或輸出參數的取值處於預期範圍內。
2、子程序開始(或結束)執行時文件或流處於打開(或關閉的狀態)。
3、指針非空。
4、傳入子程序的數組或其他容器至少能容納X個元素數據。
5、子程序開始(或結束)執行時,某個容器是空的(或者滿的)。
正常情況下,斷言主要用於開發和維護階段。通常,斷言只是在開發階段被編譯到目標代碼中,而在生產代碼時並不編譯進去,以免降低程序的性能。
public class SimpleAbstractDemo extends AbstractDemo {
SimpleAbstractDemo(int x, int y) {
super(x, y);
}
@Override
void add() {
int num = x+y;
Assert.isTrue(num != 0,"結果是0");
System.out.println("x+y=" + num);
}
public static void main(String[] args){
AbstractDemo abstractDemo = new SimpleAbstractDemo(0,0);
abstractDemo.add();
}
}
斷言要麼是啓用的,要麼是禁用的。若是啓用的,斷言的執行會觸發布爾表達式的計算,並且表達式結果是false,就會報告錯誤。若是禁用的,斷言的計算無論如何都不會產生任何效果。程序不能 假設包含在斷言中的表達式會被計算。因此這些表達式不會應該通常不會具有副作用。