>Java >java지도 시간 >사용자 정의 주석에서 키-값 쌍에 중첩된 주석 사용

사용자 정의 주석에서 키-값 쌍에 중첩된 주석 사용

Susan Sarandon
Susan Sarandon원래의
2025-01-20 04:04:10354검색

Using nested annotations for key-value pairs in a custom annotation

소개

이전 기사 "사용자 정의 주석에서 HashMap 사용"에서는 열거형 상수를 사용하여 주석에서 HashMap을 사용하는 방법을 설명했습니다.

중첩된 주석을 사용하여 키-값 쌍을 매핑할 수도 있습니다.

주석에서 지원되는 유형 목록

주석

두 개의 맞춤 주석이 필요합니다. 첫 번째 주석(예: MapItem)에는 키-값 쌍이 포함되고 두 번째 주석(예: MapItems)에는 MapItem 주석 목록이 포함됩니다.

맞춤 주석 @MapItem

@MapItem 주석은 단일 키-값 쌍을 나타냅니다.

<code class="language-java">@Target(ElementType.FIELD)
public @interface MapItem {

    String key();
    String value();
}</code>

맞춤 주석 @MapItems

@MapItems 주석은 MapItem 목록을 정의합니다.

<code class="language-java">@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MapItems {

    MapItem[] items();
}</code>

기능 테스트

@MapItem 주석 목록은 @MapItems 주석에 설정됩니다.

<code class="language-java">class ExampleDto {

    @MapItems(items = {
        @MapItem(key = "1", value = "MALE"),
        @MapItem(key = "2", value = "FEMALE"),
        @MapItem(key = "6", value = "DIVERS")
    })
    public String salutation;
}</code>

MapItemsTest는 MapItems 주석을 테스트합니다. 테스트는 인사말 필드에서 수행됩니다.

@MapItem 목록을 사용하는 방법을 보여주기 위해 @MapItem에서 HashMap을 생성하고 이를 예상되는 HashMap과 비교합니다.

<code class="language-java">class MapItemsTest {

    @Test
    void testMapItems() throws NoSuchFieldException {

        Field field = ExampleDto.class.getDeclaredField("salutation");
        field.setAccessible(true);

        MapItems annotation = field.getAnnotation(MapItems.class);

        Map<String, String> mappingItems = Arrays
                .stream(annotation.items())
                .collect(
                    Collectors.toMap(
                        MapItem::key,
                        MapItem::value
                    )
                );

        assertEquals(
            new HashMap<>() {{
                put("1", "MALE");
                put("2", "FEMALE");
                put("6", "DIVERS");
            }},
            mappingItems
        );
    }
}</code>

결론

장점

이것은 깔끔한 솔루션이며 구현하기 쉽습니다.

단점

예를 들어 키-값 쌍을 유효성 검사기에서 사용하려면 간접적으로 가져와야 합니다.

전체 예시

https://www.php.cn/link/164710e8521a5b39302f816392f05bc2

관련 기사

  • 맞춤 주석에 HashMap 사용
  • 매핑된 값에 대한 사용자 정의 Jackson JsonSerializer 및 JsonDeserializer 만들기

위 내용은 사용자 정의 주석에서 키-값 쌍에 중첩된 주석 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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