>  기사  >  Java  >  Java 주석이 런타임 시 동적으로 생성된 값을 허용할 수 있습니까?

Java 주석이 런타임 시 동적으로 생성된 값을 허용할 수 있습니까?

DDD
DDD원래의
2024-10-28 14:42:30406검색

 Can Java Annotations Accept Dynamically Generated Values at Runtime?

런타임 시 주석 평가

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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