>  기사  >  Java  >  Java의 다른 클래스에 있는 주석 값에 어떻게 액세스할 수 있습니까?

Java의 다른 클래스에 있는 주석 값에 어떻게 액세스할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 21:34:03114검색

How Can I Access Annotation Values in a Different Class in Java?

Java에서 주석 값 액세스

주석은 클래스, 메소드 및 필드에 메타데이터를 추가하기 위한 Java의 강력한 메커니즘입니다. 이러한 주석은 주석이 달린 코드의 동작을 수정하기 위해 런타임에 액세스하고 사용할 수 있습니다. 흔히 발생하는 질문 중 하나는 다른 클래스에서 주석의 값을 읽을 수 있는지 여부입니다.

이 질문에 대한 대답은 '예'이지만 주석의 보존 정책에 따라 다릅니다. 주석에는 세 가지 보존 정책 중 하나가 있을 수 있습니다.

  • 소스: 주석은 컴파일러에 의해 삭제되며 런타임 시 사용할 수 없습니다.
  • 클래스: 주석은 클래스 파일에 유지되지만 런타임에는 리플렉션을 통해 사용할 수 없습니다.
  • RUNTIME: 주석은 클래스 파일에 유지되며 리플렉션을 통해 런타임에 사용할 수 있습니다.

다른 클래스의 주석 값을 읽으려면 해당 주석에 런타임 보존 정책이 있어야 합니다. 런타임 보존 정책을 지정하려면 @Retention 주석과 RetentionPolicy 열거형을 사용하세요.

@Retention(RetentionPolicy.RUNTIME)
@interface Column {
    String columnName();
}

주석에 런타임 보존 정책이 있으면 리플렉션을 사용하여 다른 클래스의 해당 값에 액세스할 수 있습니다.

for (Field f : MyClass.class.getFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}

비공개 필드에 액세스하려면 getFields() 대신 getDeclaredFields() 메서드를 사용해야 합니다.

for (Field f : MyClass.class.getDeclaredFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}

위 내용은 Java의 다른 클래스에 있는 주석 값에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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