2013-05-24 2 views
4

이클립스 나에게 오류를주고 유지하는 상수 식이어야 속성 :값은 Min.value이

The value for annotation attribute Min.value must be a constant expression 

하지만 가장 확실히 일정한 주석을 제공하고 있습니다.

private static final int MIN_YEAR = Calendar.getInstance().get(Calendar.YEAR) - 1; 

@Min(MIN_YEAR) 

내가 그것을 변경하는 경우

그것은 완벽하게 행복

private static final int MIN_YEAR = 2013; 

할 수 있습니다,하지만 난 그렇게 할 필요가 없습니다. 아무도 왜 또는 내 MIN_YEAR 상수가 일반 숫자 대신 평가 된 식으로 선언 된 경우 상수로 간주되지 않는지 알고 있습니까?

+0

@Min은 무엇입니까? 어떤 도서관? –

+0

import javax.validation.constraints.Min; – CorayThan

+0

-1 귀하의 질문에 대한 검색 결과가 중복 된 이후로 -1 게시하기 전에 조사하십시오. 내가 틀렸고 이것이 당신의 질문에 대답하지 않는다면, 당신은 당신이 그것을 연구했다고 설명 했어야하고 이것이 당신의 필요에 맞지 않는 이유를 설명해야합니다. http://stackoverflow.com/questions/2469473/variable-field-in-a-constraint-annotation – djechlin

답변

9

private static final int MIN_YEAR = Calendar.getInstance().get(Calendar.YEAR) - 1; 

는 런타임에 결정됩니다 표현하지만,

private static final int MIN_YEAR = 2013; 

은 컴파일 시간에 결정된다, 그래서 주석의 값은 컴파일에서 해결해야하기 때문에 그것은 수있어 시간이 아닌 런타임.

+2

나는 주석이 의미있는 컴파일 시간에 실행된다고 가정합니다. 나는 이클립스의 에러 메시지가 오해의 소지가 있다고 생각한다. 문제는 그것이 둘 다 '상수 표현'이 아니라는 것이다. 그것들은 단지 두 개의 컴파일 타임 상수 표현식이 아닙니다. – CorayThan