이전 기사 "사용자 정의 주석에서 HashMap 사용"에서는 열거형 상수를 사용하여 주석에서 HashMap을 사용하는 방법을 설명했습니다.
중첩된 주석을 사용하여 키-값 쌍을 매핑할 수도 있습니다.
주석에서 지원되는 유형 목록
두 개의 맞춤 주석이 필요합니다. 첫 번째 주석(예: MapItem)에는 키-값 쌍이 포함되고 두 번째 주석(예: MapItems)에는 MapItem 주석 목록이 포함됩니다.
@MapItem 주석은 단일 키-값 쌍을 나타냅니다.
<code class="language-java">@Target(ElementType.FIELD) public @interface MapItem { String key(); String value(); }</code>
@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
위 내용은 사용자 정의 주석에서 키-값 쌍에 중첩된 주석 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!