2017-02-11 6 views
1

Java에서 중복 및 자세한 null 검사를 줄이고 싶습니다만, Java에 표준 @NotNull 주석이 없다는 것을 이해합니다. 여기서 C#에는 사용할 수있는 계약이 있습니다.C# Contracts 대 NotNull/자신의 Java 롤

Contract.Requires(x != null); 

내가 누락되었지만 내 코드를 코딩 할 수 없습니까?

public class Contract { 

    public static void requireNotNull(Object object) { 
     if (object == null) 
      throw new IllegalArgumentException("Contract forbids null"); 
    } 

} 

@NotNull 또는 계약의 이점이 누락 되었습니까?

+0

동기화 할 방법이 필요합니다. – efekctive

+0

Java에 [매우 많은 @ NonNull' 주석이 있습니다.] (http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i- 사용) 가장 인기있는 것들은 괜찮은 IDE에서 지원해야합니다. 당신이 무엇을 하든지, 자신의 구현을 롤백하지 마십시오. –

+0

플러그 형 시스템이 도움이 될 수 있습니다. – efekctive

답변

2

Java에서 작성한 코드 계약과는 달리 코드 계약은 정적으로 분석 할 수 있으며이를 위반하면 빌드 오류가 발생합니다. 작성한 Java 코드는 런타임 오류 만 제공합니다.

예를 들어 메소드의 매개 변수를 Null이 아닌 것으로 표시 한 다음 Null 검사를 수행하지 않고 상위 레이어에서 호출하려고하면 오류가 발생합니다. 이것은 코드 계약이 정적 분석기의 일부이기 때문에 컴파일 타임 오류가 아니며 Visual Studio 또는 코드 계약 정적 분석기를 구현하는 다른 제품 외부에서 컴파일하는 경우 잡히지 않습니다.

자세한 내용은 this documentation을 참조하십시오.