Rumah > Java > javaTutorial > Bagaimana untuk Mencipta Gson TypeToken untuk ArrayList dengan Jenis Item Dinamik?

Bagaimana untuk Mencipta Gson TypeToken untuk ArrayList dengan Jenis Item Dinamik?

Susan Sarandon
Lepaskan: 2024-12-11 13:45:10
asal
1007 orang telah melayarinya

How to Create a Gson TypeToken for an ArrayList with a Dynamic Item Type?

Gson TypeToken dengan Dynamic ArrayList Jenis Item

Dalam Gson, TypeToken ialah kelas utiliti yang boleh digunakan untuk mencipta maklumat jenis untuk jenis yang tidak diketahui pada masa larian. Ia biasanya digunakan untuk menyahsiri rentetan JSON ke dalam objek Java.

Apabila bekerja dengan senarai, jenis item ArrayList boleh ditakrifkan secara dinamik semasa masa jalan. Ini boleh dilakukan menggunakan refleksi.

Masalah:

Kod berikut cuba mencipta TypeToken untuk senarai dengan jenis item dinamik:

private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
    Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
    return typeOfObjectsListNew;
}
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini menghasilkan SQLException apabila menukar rentetan JSON kepada objek disebabkan oleh jenis yang tidak sepadan takrifan.

Penyelesaian:

Bermula dari Gson 2.8.0, anda boleh menggunakan TypeToken#getParameterized(Type rawType, Type... typeArguments) untuk mencipta TypeToken untuk senarai dengan jenis item dinamik. Penyelesaiannya ialah:

Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, myClass).getType();
Salin selepas log masuk

Ini mencipta TypeToken untuk ArrayList dengan jenis item dinamik yang ditentukan (myClass). Anda kemudiannya boleh menggunakan getType() untuk mendapatkan semula maklumat jenis untuk digunakan dalam penyahserikatan.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Gson TypeToken untuk ArrayList dengan Jenis Item Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan