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; }
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();
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!