> Java > java지도 시간 > Java 주석에 상수의 값을 동적으로 할당할 수 있습니까?

Java 주석에 상수의 값을 동적으로 할당할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-01 19:18:11
원래의
884명이 탐색했습니다.

Can Java Annotations Be Dynamically Assigned Values from Constants?

상수 Java에서 주석 값의 동적 제공

Java에서 컴파일 타임에 해결되는 주석의 본질적인 특성은 다음과 같은 문제를 제기합니다. 상수의 주석에 값을 동적으로 할당하는 것이 가능한지 여부.

이 점을 고려하세요. 시나리오:

public interface FieldValues {
   String[] FIELD1 = new String[]{"value1", "value2"};
}
로그인 후 복사
@SomeAnnotation(locations = {"value1", "value2"})
public class MyClass {
   ....
}
로그인 후 복사

주석 내에서 문자열을 반복적으로 지정하지 않기 위해 개발자는 대신 상수를 활용하는 방법을 찾을 수 있습니다. 예를 들면 다음과 같습니다.

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

그러나 이 접근 방식은 기본 요소와 문자열만 컴파일 타임 상수로 사용할 수 있다는 Java의 제약으로 인해 컴파일 오류를 유발합니다. Java 언어 사양에 명시된 바와 같이:

"컴파일 시간 상수 표현식은 갑자기 완료되지 않고 다음만을 사용하여 구성되는 기본 유형 또는 문자열의 값을 나타내는 표현식입니다."

따라서 FieldValues.FIELD1은 문자열 배열을 보유하지만 Java는 이를 유효한 주석으로 분류하지 않습니다. value.

또한 Java에서는 배열 항목의 무결성을 보장하는 것이 불가능하다는 점에 유의하는 것이 중요합니다. 런타임 시 배열 수정(예: FieldValues.FIELD1[0]="value3")이 허용되어 배열의 불변성이 의심스럽습니다.

따라서 상수는 값을 직접 제공할 수 없지만 Java의 주석에는 대안이 있습니다. 가능한 해결책 중 하나는 사용자 정의 주석 프로세서를 생성하거나 리플렉션을 사용하여 런타임 중에 동적으로 값을 할당하는 것입니다.

위 내용은 Java 주석에 상수의 값을 동적으로 할당할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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