在自訂註釋中對鍵值對使用嵌套註釋
引言
在我之前的文章「在自訂註解中使用雜湊映射」中,我解釋瞭如何使用枚舉常數在註解中使用HashMap。
巢狀註解也可以用來映射鍵值對。
註解中支援的類型清單
註
需要兩個自訂註解。第一個註解(例如MapItem)包含一個鍵值對,第二個註解(例如MapItems)包含一個MapItem註解清單。
自訂註解 @MapItem
註解@MapItem表示單一鍵值對。
@Target(ElementType.FIELD) public @interface MapItem { String key(); String value(); }
自訂註解 @MapItems
註解@MapItems定義了一個MapItem清單。
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface MapItems { MapItem[] items(); }
功能測試
@MapItem註解清單設定在@MapItems註解中。
class ExampleDto { @MapItems(items = { @MapItem(key = "1", value = "MALE"), @MapItem(key = "2", value = "FEMALE"), @MapItem(key = "6", value = "DIVERS") }) public String salutation; }
MapItemsTest測試MapItems註解。測試在salutation字段上進行。
為了示範如何使用@MapItem列表,我從@MapItem建立一個HashMap,與預期的HashMap進行比較。
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 ); } }
結論
優點
這是一個巧妙的解決方案,很容易實現。
缺點
例如,如果鍵值對要在驗證器中使用,則必須間接取得它們。
完整範例
https://www.php.cn/link/164710e8521a5b39302f816392f05bc2
相關文章
- 在自訂註解中使用HashMap
- 為映射值建立自訂Jackson JsonSerializer和JsonDeserializer
以上是在自訂註釋中對鍵值對使用嵌套註釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用IntelliJIDEAUltimate版本啟動Spring...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...
