예:
void finishApplication() {
System.exit(0);
System.out.println("Application is terminated"); // 도달할 수 없는 코드
}
단, 이러한 삽입은 메서드 컨트랙트 추론에 의존한다는 점에 유의하세요. 특히 항상 예외를 던지는 static 또는 final 메서드를 호출하면 '항상 실패하는' 컨트랙트가 추론되며 메서드 호출 이후의 코드는 도달 불가능한 것으로 간주됩니다. 예:
void run() {
performAction();
System.out.println("Action is performed"); // 도달할 수 없는 코드
}
static void performAction() {
throw new AssertionError();
}
이로 인해 코드 후처리가 사용되는 경우(예: 어노테이션 처리기가 메서드 본문을 유용한 다른 것으로 대체하는 경우), 위양성이 발생할 수 있습니다. 위양성 경고를 방지하려면, org.jetbrains:annotations 패키지의 명시적인 @org.jetbrains.annotations.Contract 어노테이션으로 자동 컨트랙트 추론을 억제하세요.
void run() {
performAction();
System.out.println("Action is performed"); // 더 이상 경고가 발생하지 않습니다
}
@Contract("-> _") // 구현이 대체됩니다
static void performAction() {
throw new AssertionError();
}
2024.1의 새로운 기능