2016-11-08 12 views

답변

4

은 몇 가지 예

  • @Contract ("-> 널 (null)이 _는 null")

    @Contract 주석

    몇 possibilites있다 두 번째 인수가 null 인 경우

  • @Contract ("_, 널 (null) -> 널 !! _, 널 (null) -> 널 (null)") - 두 번째 인수가 null의 경우, 그렇지 않으면 - null가 아닌 경우 메소드는 null를 돌려줍니다.

  • @Contract ("true -> fail") - true가 전달되면 예외를 throw하는 일반적인 assertFalse() 메서드 .

은 자세한 내용은 https://www.jetbrains.com/help/idea/2016.2/contract-annotations.html를 참조하십시오.

IntelliJ IDEA 없이도 사용할 수 있습니다. IDEA는 이러한 특수 효과를 현명하게 지원합니다. 지정된 불변 조건이 실제로 충족되면 메서드 코드를 검사합니다.

텍스트 설명

이 방법은 모든 경우를 다루지는 않습니다. 필드 간의 더 복잡한 의존성을 위해서는 영어 단어를 사용하는 불변성을 설명해야합니다. 예를 들어

, 맵이 이전에 키에 대한 매핑이있는 경우 https://docs.oracle.com/javase/7/docs/api/java/util/Map.html#put(K,%20V)

는, 낡은 값은 지정된 값으로 대체됩니다.

예외 또한

는 예외 서술 불변 적용 할 수있다.상기 Map.put 방법을 위해 우리는 (불변 클래스를 끊을 인수) 유효하지 않은 인수에 대한 예외

  • @throws UnsupportedOperationException를 올리기 작업 이지도에 의해 지원되지 않는 경우
    • @throws 다음 한 ClassCastException - 지정된 키 또는 값의 클래스가이 맵에 포함되는 것을 막는 경우
    • @throws NullPointerException - 지정된 키 또는 값이 null 인 경우(210),이 맵이 null 키를 허가 또는 지정된 키 또는 가치가있는 특성이 원인으로,이 맵에 포함 할 수없는 경우
    • @throws 예외 : IllegalArgumentException 값하지 않습니다