> Java > java지도 시간 > Java의 주석 매개변수를 문자열 또는 배열 상수로 초기화할 수 있습니까?

Java의 주석 매개변수를 문자열 또는 배열 상수로 초기화할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-11-28 07:10:12
원래의
748명이 탐색했습니다.

Can Annotation Parameters in Java Be Initialized with String or Array Constants?

문자열 상수를 사용한 주석 매개변수 초기화

문제:

Java에서 문자열을 사용하여 주석 매개변수를 초기화하는 것이 가능합니까? 상수 또는 배열 상수? 주석 매개변수는 컴파일 시간에 평가되므로 이 기능이 작동하지 않을 수 있습니다.

원하는 구문의 예는 다음과 같습니다.

@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
   ....
}
로그인 후 복사

FieldValues는 상수 배열 FIELD1이 있는 인터페이스입니다.

정답:

Java에 따르면 언어 사양 15.28, 컴파일 타임 상수는 기본 요소와 문자열만 될 수 있습니다. 이는 주석 매개변수를 초기화하기 위해 배열 상수를 사용할 수 없음을 의미합니다.

설명:

주석은 컴파일 타임에 평가되며 주석에 포함된 값은 그 때 알아야 합니다. 배열의 요소는 런타임에 수정될 수 있으므로 배열은 컴파일 타임 상수가 아닙니다. 따라서 배열 상수를 주석 매개변수로 사용할 수 없습니다.

가능한 해결 방법:

  • 고정 배열 사용: 주석 매개변수에서 배열 값을 직접 정의하여 해당 값이 전체에서 일정하게 유지되도록 합니다.
  • 래퍼 클래스 사용: 비최종 배열을 캡슐화하고 해당 요소에 대한 지속적인 액세스를 제공하는 래퍼 클래스를 만듭니다.
  • 전처리기 사용 도구: 주석이나 주석 프로세서와 같은 전처리기 도구를 사용하여 작업 중에 필요한 상수를 생성합니다. 컴파일.

참고:

배열이 최종으로 정의되더라도 여전히 컴파일 시간 상수가 아니며 해당 요소는 반사적으로 수정될 수 있습니다. .

위 내용은 Java의 주석 매개변수를 문자열 또는 배열 상수로 초기화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿