Menggunakan anotasi bersarang untuk pasangan nilai kunci dalam anotasi tersuai
Pengenalan
Dalam artikel saya sebelum ini "Menggunakan HashMap dalam Anotasi Tersuai", saya menerangkan cara menggunakan HashMap dalam anotasi menggunakan pemalar penghitungan.
Anotasi bersarang juga boleh digunakan untuk memetakan pasangan nilai kunci.
Senarai jenis yang disokong dalam anotasi
Anotasi
Memerlukan dua anotasi tersuai. Anotasi pertama (seperti MapItem) mengandungi pasangan nilai kunci, dan anotasi kedua (seperti MapItems) mengandungi senarai anotasi MapItem.
Anotasi tersuai @MapItem
Anotasi @MapItem mewakili pasangan nilai kunci tunggal.
@Target(ElementType.FIELD) public @interface MapItem { String key(); String value(); }
Anotasi tersuai @MapItems
Anotasi @MapItems mentakrifkan senarai MapItem.
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface MapItems { MapItem[] items(); }
Ujian fungsional
Senarai anotasi @MapItem ditetapkan dalam anotasi @MapItems.
class ExampleDto { @MapItems(items = { @MapItem(key = "1", value = "MALE"), @MapItem(key = "2", value = "FEMALE"), @MapItem(key = "6", value = "DIVERS") }) public String salutation; }
MapItemsTest menguji anotasi MapItems. Ujian dilakukan di medan salam.
Untuk menunjukkan cara menggunakan senarai @MapItem, saya mencipta HashMap daripada @MapItem dan membandingkannya dengan HashMap yang dijangkakan.
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 ); } }
Kesimpulan
Kelebihan
Ini adalah penyelesaian yang kemas dan mudah untuk dilaksanakan.
Keburukan
Contohnya, jika pasangan nilai kunci hendak digunakan dalam pengesah, ia mesti diperoleh secara tidak langsung.
Contoh penuh
https://www.php.cn/link/164710e8521a5b39302f816392f05bc2
Artikel berkaitan
- Gunakan HashMap dalam anotasi tersuai
- Buat Jackson JsonSerializer dan JsonDeserializer tersuai untuk nilai yang dipetakan
Atas ialah kandungan terperinci Menggunakan anotasi bersarang untuk pasangan nilai kunci dalam anotasi tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).