W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
IntelliJ IDEA中 @Contract 注釋通過(guò)定義方法參數(shù)和返回值之間的依賴關(guān)系,為您的代碼帶來(lái)更多的安全性。該信息為源代碼提供了更智能的控制流分析,并有助于避免可能出現(xiàn)的錯(cuò)誤。
@Contract 注釋是一個(gè)強(qiáng)大而靈活的工具,可以讓你的 API 的安全。此外,它不僅可以用于注釋自己的代碼,還可以用于其他現(xiàn)有的庫(kù)。
一旦為項(xiàng)目庫(kù)配置了注釋,IntelliJ IDEA 就會(huì)將注釋的信息存儲(chǔ)在簡(jiǎn)單的 XML 文件中,以便通過(guò)版本控制與團(tuán)隊(duì)共享。
若要啟用項(xiàng)目中的注釋,請(qǐng)通過(guò)項(xiàng)目結(jié)構(gòu)對(duì)話框?qū)?<IntelliJ IDEA Home>/lib/annotations.jar 添加到類路徑中。
@Contract 注釋的使用可以通過(guò)以下示例來(lái)說(shuō)明:
該 @Contract 注釋值的語(yǔ)法如下:
這里的約束是:
該 @Contract 注釋有兩個(gè)屬性: value 和 pure。
value 屬性包含描述調(diào)用參數(shù)和返回值之間的因果關(guān)系的 contract 子句。
pure 屬性適用于不更改其對(duì)象狀態(tài)的方法,但只返回一個(gè)新值。該屬性可以用作“忽略方法調(diào)用的結(jié)果”檢查的提示,以指示在調(diào)用時(shí)應(yīng)該使用方法的返回值。它是假(false)(默認(rèn)情況下),也可以為真(true)。
參考例子
請(qǐng)考慮以下代碼:
private static void printSorted(){
List <Integer> sorted = Quicksort.sort(null);
if (sorted != null){
System.out.println("Sorted array" + sorted);
}
}
public static <T extends Comparable<T>> List<T> sort(List<T> list){
if(list != null){
List<T> copy = new ArrayList<T>(list);
sort(copy);
return copy;
}
else {
return null;
}
}
IntelliJ IDEA 不知道 null 輸入產(chǎn)生一個(gè)空輸出。
我們用 @Contract 注釋來(lái)修飾 sort () 方法,指定 null 輸入產(chǎn)生 null 輸出。
IntelliJ IDEA 立即認(rèn)識(shí)到該 if 聲明是無(wú)關(guān)緊要的,并報(bào)告的條件總是錯(cuò)誤的:
IntelliJ IDEA 建議庫(kù)類的方法的兩個(gè)意圖操作:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: