예:
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의 새로운 기능