2012-10-23 4 views

답변

23

를 사용해야합니다 같아요.

+0

그렇다면 AssertionError가 발생합니다. – Thilo

+4

언제나'true'가'false'입니다.) –

+1

아,'='를'=='로 읽으십시오. 내가 참조. 영리한. – Thilo

18

난 당신이 내가이 "공식적인"방법입니다 확실하지 않다 나는이

boolean assertOn = false; 
// *assigns* true if assertions are on. 
assert assertOn = true; 

를 사용 Class.desiredAssertionStatus()

http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#desiredAssertionStatus()

+1

이 정답 – bestsss

+1

이 제공 가능한 "우발적 인 할당"경고를 피할 수있다 다른 방법으로 –

+2

실제로, javadoc에서 : "이 메소드는 그것이 초기화 될 때 (또는 초기화 될 때) 지정된 클래스와 연관된 실제 상태를 반환 할 수 있다고 보장하지 않습니다." 그래서이 대답은 나에게 틀린 것처럼 보입니다. 그리고 조의 대답을 고려해야합니다. – FBB

14

오라클 자바 튜토리얼이 작업을 수행하는 방법에 대한 정보를 제공합니다 ...

http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html

튜토리얼

7에서 발췌 왜 어설 션 상태를 조회 할 수있는 구조를 제공하지 포함 된 클래스의?

이러한 구성은 사람들이 복합 어서 트 코드를 인라인 화하도록 유도하며, 이는 우리가 나쁜 것으로 간주합니다. 또한, 현재 API 꼭대기 어설 상태가 쿼리에 간단합니다, 당신은 당신이해야 느낀다면 :

boolean assertsEnabled = false; 
assert assertsEnabled = true; // Intentional side-effect!!! 
// Now assertsEnabled is set to the correct value 
0
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean(); 
boolean assertionsEnabled = mx.getInputArguments().contains("-ea");