>  기사  >  Java  >  Java 주석에 동적 값을 전달할 수 있습니까?

Java 주석에 동적 값을 전달할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 08:28:02969검색

 Can You Pass Dynamic Values to Java Annotations?

Java 주석에 동적 값 제공

초기 시도 및 문제

Java에서는 주석을 사용하여 다음에 메타데이터를 제공합니다. 클래스, 메소드, 변수. 일부 시나리오에서는 주석 속성에 동적 값을 할당할 수 있습니다. 그러나 메소드 호출 결과와 같이 상수가 아닌 표현식을 주석 속성에 할당하는 것은 일반적으로 금지됩니다. 경험한 바와 같이:

@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)

컴파일러는 다음과 같이 불평합니다.

"주석 속성 MyInterface.aString의 값은 상수 표현식이어야 합니다."

컴파일러 제한 사항

이 제한은 컴파일 타임에 RetentionPolicy.RUNTIME 주석에 대한 주석 메타데이터에 대한 컴파일러의 평가에서 비롯됩니다. 주석 속성에 할당된 값은 컴파일 시 알려져야 합니다.

다른 보존 정책

Java는 주석에 대해 다양한 보존 정책을 제공합니다.

  • RetentionPolicy.SOURCE: 컴파일 시간 후 삭제
  • RetentionPolicy.CLASS: 클래스 파일에 포함
  • RetentionPolicy.RUNTIME: 런타임 내내 유지

해결 방법

안타깝게도 동적으로 생성된 문자열 값을 주석에 제공하려는 목표는 컴파일러의 제한으로 인해 달성할 수 없습니다. RetentionPolicy.SOURCE나 RetentionPolicy.RUNTIME 모두 이를 허용하지 않습니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.