assert 鏄湪 J2SE1.4 涓紩鍏ョ殑鏂扮壒鎬э紝 assertion 灝辨槸鍦ㄤ唬鐮佷腑鍖呮嫭鐨勫竷灝斿瀷鐘舵侊紝紼嬪簭鍛樿涓鴻繖涓姸鎬佹槸 true 銆備竴鑸潵璇?/span> assert 鍦ㄥ紑鍙戠殑鏃跺欐槸媯鏌ョ▼搴忕殑瀹夊叏鎬х殑錛屽湪鍙戝竷鐨勬椂鍊欓氬父閮戒笉浣跨敤 assert 銆傚湪 1.4 涓坊鍔犱簡 assert 鍏抽敭瀛楀拰 java.lang.AssertError 綾葷殑鏀寔銆?/span>
棣栧厛錛屾垜浠湁蹇呰浠庝竴涓緥瀛愯璧?/span> assert
public class AssertTest
{
public static void main(String[] args)
{
AssertTest at = new AssertTest();
at.assertMe(true);
at.assertMe(false);
}
private void assertMe(boolean boo)
{
assert boo?true:false;
System.out.println(true condition);
}
}
紼嬪簭涓寘鍚簡 assert 鐨勮瘽錛屼綘瑕佺敤 javac -source 1.4 xxx.java 鏉ョ紪璇戯紝鍚﹀垯緙栬瘧鍣ㄤ細鎶ラ敊鐨勩傝鎯寵 assert 寰楅儴鍒嗚繍琛岀殑璇濓紝瑕佷嬌鐢?/span> java -ea xxx 鏉ヨ繍琛岋紝鍚﹀垯鍖呭惈 assert 寰楄浼氳蹇界暐銆備笅闈㈡垜浠繍琛?/span>
javac -source 1.4 AssertTest.java
java -ea AssertTest
鐪嬬湅緇撴灉鐨勮緭鍑烘槸錛?/span>
true condition
Exception in thread main java.lang.AssertionError
at AssertTest.assertMe(AssertTest.java:13)
at AssertTest.main(AssertTest.java:7)
褰撴垜浠繍琛?/span> at.assertMe(true) 寰楁椂鍊欙紝鐢變簬 assert boo?true:false 鐩稿綋浜?/span> assert true; 鍥犳娌℃湁浠諱綍闂錛岀▼搴忓線涓嬫墽琛屾墦鍗板嚭 true condition 錛屼絾鏄墽琛?/span> at.assertMe(false) 鐨勬椂鍊欑浉褰撲簬 assert false 錛岃繖涓椂鍊欒В閲婂櫒灝變細鎶涘嚭 AssertionError 浜嗭紝紼嬪簭灝辯粓姝簡銆傚ぇ瀹跺繀欏繪竻妤?/span> AssertionError 鏄戶鎵胯嚜 Error 寰楋紝鍥犳浣犲彲浠ヤ笉鍐嶇▼搴忎腑 catch 瀹冪殑錛屽綋鐒朵綘涔熷彲浠ュ湪紼嬪簭涓?/span> catch 瀹冪劧鍚庣▼搴忓彲浠ョ戶緇墽琛屻備緥濡傦細
public class AssertTest
{
public static void main(String[] args)
{
AssertTest at = new AssertTest();
try
{
at.assertMe(true);
at.assertMe(false);
}
catch(AssertionError ae)
{
System.out.println(AsseriontError catched);
}
System.out.println(go on);
}
private void assertMe(boolean boo)
{
assert boo?true:false;
System.out.println(true condition);
}
}
assert 榪樻湁鍙﹀涓縐嶈〃杈劇殑鏂瑰紡錛屽氨鏄?/span> assert exp1:exp2; 鍏朵腑 exp1 鏄釜 boolean 榪斿洖鍊煎緱琛ㄨ揪寮忥紝鑰?/span> exp2 鍙互鏄師濮嬬殑鏁版嵁綾誨瀷鎴栬呭璞¢兘鍙互渚嬪錛?/span>
boolean boo = true;
String str = null;
assert boo = false 錛?/span> str=error;
鎴戜滑鍒氬紑濮嬭寰?/span> assert exp1 寰楀艦寮忥紝褰?/span> exp1 鏄?/span> false 寰楁椂鍊欙紝 AssertionError 寰楅粯璁ゆ瀯閫犲櫒浼氳璋冪敤錛屼絾鏄?/span> assert exp1:exp2 榪欐牱鐨勫艦寮忥紝褰?/span> exp1 涓?/span> true 鐨勬椂鍊欏悗闈?/span> exp2 琚垨鐣ワ紝濡傛灉 false 鐨勮瘽錛屽悗闈㈢殑琛ㄨ揪寮忕殑緇撴灉浼氳璁$畻鍑烘潵騫朵綔涓?/span> AssertionError 寰楁瀯閫犲櫒鍙傛暟銆傜湅涓嬮潰鐨勪緥瀛愶細
public class AssertTest
{
public static void main(String[] args)
{
AssertTest at = new AssertTest();
at.assertMe(true);
at.assertMe(false);
}
private void assertMe(boolean boo)
{
String s = null;
assert boo?true:false:s = hello world;
System.out.println(true condition);
}
} 榪愯鐨勬椂鍊欎細寰楀埌榪欐牱鐨勭粨鏋?/span>
true condition
Exception in thread main java.lang.AssertionError: hello world
at AssertTest.assertMe(AssertTest.java:14)
at AssertTest.main(AssertTest.java:7)
Assert 鏈濂戒笉瑕佹互鐢紝鍘熷洜鏄?/span> assert 騫朵笉涓瀹氶兘鏄?/span> enable 鐨勶紝涓嬮潰涓ょ鎯呭喌灝變笉搴旇鐢?/span> assert
1 涓嶈鍐?/span> public 鐨勬柟娉曢噷闈㈡鏌ュ弬鏁版槸涓嶆槸涓?/span> null 涔嬬被鐨勬搷浣?/span>
渚嬪 public int get(String s)
{
assert s != null;
}
濡傛灉闇瑕佹鏌ヤ篃鏈濂介氳繃 if s = null 鎶涘嚭 NullPointerException 鏉ユ鏌?/span>
2 涓嶈鐢?/span> assert 鏉ユ鏌ユ柟娉曟搷浣滅殑榪斿洖鍊兼潵鍒ゆ柇鏂規硶鎿嶄綔鐨勭粨鏋?/span>
渚嬪 assert list.removeAll(); 榪欐牱鐪嬭搗鏉ュソ鍍忔病鏈夐棶棰?/span> 浣嗘槸鎯蟲兂濡傛灉 assert 琚?/span> disable 鍛紝閭f牱浠栧氨涓嶄細琚墽琛屼簡 鎵浠?/span> removeAll() 鎿嶄綔灝辨病鏈夎鎵ц 鍙互榪欐牱浠f浛
boolean boo = list.removeAl();
assert boo;