Rumah > Java > javaTutorial > teks badan

Bagaimana Mengendalikan Pemadaman Jenis dalam Kaedah Generik Apabila Menggunakan Jackson dengan Rujukan Jenis?

Susan Sarandon
Lepaskan: 2024-10-25 21:18:03
asal
984 orang telah melayarinya

How to Handle Type Erasure in Generic Methods When Using Jackson with Type References?

Jackson dan Rujukan Jenis dalam Kaedah Generik

Apabila menggunakan Jackson untuk bersiri dan penyahsirilan dalam kaedah generik, adalah mungkin untuk menghadapi masalah pemadaman jenis yang membawa kepada kepada tingkah laku yang tidak dijangka.

Pertimbangkan kod berikut di mana kaedah penguji cuba mendapatkan semula objek permintaan generik daripada rentetan JSON menggunakan rujukan jenis generik:

<code class="java">public MyRequest<T> tester() {
    TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>();
    MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef);
    return requestWrapper.getRequest();
}</code>
Salin selepas log masuk

Isu berlaku apabila getMyObject () kaedah dipanggil dalam objek permintaan:

<code class="java">@NotNull
@JsonIgnore
public T getMyObject() {
    return myobjects.get(0);
}</code>
Salin selepas log masuk

Jackson mentafsirkan jenis generik T sebagai Objek, menghasilkan nilai pulangan menjadi LinkedHashMap apabila kaedah getMyObject() digunakan.

Untuk menyelesaikan kekaburan ini, adalah perlu untuk menyatakan secara eksplisit jenis kelas sebenar untuk T. Ini boleh dicapai dengan menyediakan objek Kelas sebagai hujah kepada TypeReference:

<code class="java">public MyRequest<T> tester() {
    TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>() {};
    MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef);
    Type type = typeRef.getType(); // Retrieve the actual type from the TypeReference
    return requestWrapper.getRequest(type);
}</code>
Salin selepas log masuk

Dengan memperkenalkan pembolehubah jenis, ia adalah mungkin untuk mengarahkan Jackson untuk menyahsiri Objek JSON berdasarkan maklumat jenis yang ditentukan, memberikan tingkah laku yang lebih tepat dan boleh diramal.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Pemadaman Jenis dalam Kaedah Generik Apabila Menggunakan Jackson dengan Rujukan Jenis?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!