Rumah >Java >javaTutorial >Bagaimana untuk Menentukan Kelas Jenis Generik di Jawa?
Dalam bidang pengaturcaraan generik, selalunya menjadi penting untuk menentukan kelas khusus jenis generik pada masa ini guna. Walau bagaimanapun, mekanisme pemadaman jenis generik Java menimbulkan cabaran kepada usaha ini.
Untuk menangani isu ini, mari kita teliti contoh yang meniru senario dunia sebenar:
public class MyGenericClass<T> { public void doSomething() { // Imagine a 3rd party library call that expects a Class object T bean = (T) someObject.create(T.class); } }
Malangnya, kod di atas akan gagal dengan ralat "literal kelas haram untuk parameter jenis T". Ini adalah kerana maklumat jenis generik dipadamkan pada masa jalan, menjadikan penggunaan langsung kelas T adalah mustahil.
Jadi, bagaimanakah kita boleh mengatasi halangan ini? Penyelesaian muncul sebagai penyelesaian yang berdaya maju: memperkenalkan kaedah kilang statik yang menerima kelas yang diingini sebagai parameter.
public class MyGenericClass<T> { private final Class<T> clazz; public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) { return new MyGenericClass<>(clazz); } private MyGenericClass(Class<T> clazz) { this.clazz = clazz; } public void doSomething() { T instance = clazz.newInstance(); } }
Pendekatan ini membolehkan anda menentukan kelas generik secara eksplisit semasa penciptaan objek, dengan berkesan memintas pemadaman masa jalan isu. Walau bagaimanapun, ia datang dengan kelemahan: ia menambahkan beberapa kod boilerplate dan sedikit merumitkan API. Namun begitu, ia kekal sebagai penyelesaian yang berkesan apabila penentuan jenis kelas amat diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Kelas Jenis Generik di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!