IntelliJ IDEA中 @Contract 注釋通過定義方法參數和返回值之間的依賴關系,為您的代碼帶來更多的安全性。該信息為源代碼提供了更智能的控制流分析,並有助於避免可能出現的錯誤。
@Contract 注釋是一個強大而靈活的工具,可以讓你的 API 的安全。此外,它不僅可以用於注釋自己的代碼,還可以用於其他現有的庫。
一旦為項目庫配置了注釋,IntelliJ IDEA 就會將注釋的信息存儲在簡單的 XML 文件中,以便通過版本控制與團隊共享。
若要啟用項目中的注釋,請通過項目結構對話框將 <IntelliJ IDEA Home>/lib/annotations.jar 添加到類路徑中。
@Contract 注釋的使用可以通過以下示例來說明:
- @Contract("_, null -> null") :如果方法的第二個參數是 null,方法返回 null。
- @Contract("_, null -> null; _, !null -> !null"):如果方法的第二個參數是 null,則方法返回 null,否則為 null。
- @Contract("true -> fail") :一個典型的 assertFalse () 方法,如果將 true 傳遞給它,則拋出一個異常。
@Contract 注釋的語法
該 @Contract 注釋值的語法如下:
- contract ::= (clause ‘;’)* clause
- clause ::= args ‘->’ effect
- args ::= ((arg ‘,’)* arg )?
- arg ::= value-constraint
- value-constraint ::= ‘_’ | ‘null’ | ‘!null’ | ‘false’ | ‘true’
- effect ::= value-constraint | ‘fail’
這里的約束是:
- _ :任何價值
- null:空值
- !null: 一個靜態證明為不是空值
- true:布爾值:真
- false:布爾值:假
- fail :如果參數滿足參數約束,該方法將拋出異常
@Contract 注釋的屬性
該 @Contract 注釋有兩個屬性: value 和 pure。
value 屬性包含描述調用參數和返回值之間的因果關系的 contract 子句。
pure 屬性適用於不更改其對象狀態的方法,但只返回一個新值。該屬性可以用作“忽略方法調用的結果”檢查的提示,以指示在調用時應該使用方法的返回值。它是假(false)(默認情況下),也可以為真(true)。