이것은 @ bala의 좋은 대답에 대한 의견 이었지만 너무 오래되었습니다.
어설 션을 활성화 한 다음 기본 클래스를 호출하면 어설 션이 활성화되기 전에 기본 클래스가로드되므로 코드의 다른 요소를 직접 참조하지 않는 로더가 필요할 수 있습니다. 어서션을 설정 한 다음 리플렉션을 통해 나머지 코드를로드 할 수 있습니다.
클래스가로드 될 때 어설 션을 사용할 수없는 경우에는 즉시 "컴파일 아웃"해야 켜기/끄기를 전환 할 수 없습니다. 그 (것)들을 토글하는 경우에 당신은 단언을 전혀 원하지 않는다. 코드가 많이 실행되고 checkArguments가 false 다음 전체 메서드 호출이 수 변경되지 않기 때문에 경우
public myAssertNotNull(Object o) {
if(checkArguments)
if(o == null)
throw new IllegalArgumentException("Assertion Failed");
}
는 주장만큼 빠르게 작동합니다 : 인해 런타임 컴파일, 이런 일에
런타임에 컴파일되어 어설 션과 동일한 기본 효과를 갖습니다 (이 성능은 VM에 따라 다름).
코멘트가 "사용되지 않음"으로 표시되면 "주석 기반"이미지를 작성할 수 없으므로 이유를 올바르게 문서화하는 것이 좋습니다. 리플렉션을 통해 MyClass의 인스턴스를 만드는 이유는 무엇입니까? –