Java에서 주석은 컴파일러나 런타임 시스템에 메타데이터를 제공하는 데 유용합니다. 그러나 계속되는 질문은 주석이 런타임에 동적으로 생성된 값을 받아들일 수 있는지 여부입니다.
아래 시도는 @MyInterface의 aString 속성에 대한 문자열 값을 생성하려고 시도합니다.
<code class="java">@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME) public class MyClass { static final String GENERIC_GENERATED_NAME = MyClass.generateName(MyClass.class); public static final String generateName(final Class<?> c) { return c.getClass().getName(); } }</code>
그러나 컴파일러는 오류 메시지와 함께 이를 거부합니다.
The value for annotation attribute MyInterface.aString must be a constant expression
주석은 컴파일 타임에 평가되지만 GENERIC_GENERATED_NAME은 런타임까지 알려지지 않기 때문입니다.
원하는 효과를 얻으려면 컴파일 타임에 generateName 메서드를 평가할 수 있는 주석 프로세서를 생성해야 합니다. 그러나 이 솔루션에는 런타임 시 동적으로 코드를 평가하기 위한 Java 지원이 없기 때문에 제한 사항이 있습니다.
위 내용은 Java 주석이 런타임 시 동적으로 생성된 값을 허용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!