Adakah Objek Primitif?
Apabila bekerja dengan tatasusunan Objek, mungkin perlu untuk menentukan sama ada mana-mana elemen adalah primitif jenis. Kaedah Class.isPrimitive() tidak memberikan hasil yang dijangkakan untuk objek, seperti dalam contoh:
int i = 3; Object o = i; System.out.println(o.getClass().getName() + ", " + o.getClass().isPrimitive());
yang mencetak:
java.lang.Integer, false
Isunya
Isunya ialah tatasusunan Object[] mengandungi rujukan, bukan primitif. Oleh itu, Class.isPrimitive() sentiasa mengembalikan false untuk objek, walaupun ia mewakili nilai primitif.
A Solution
Untuk menentukan sama ada objek ialah pembungkus untuk jenis primitif, tiada fungsi perpustakaan terbina dalam. Walau bagaimanapun, adalah mungkin untuk mencipta penyelesaian tersuai:
<code class="java">import java.util.*; public class Test { public static void main(String[] args) { System.out.println(isWrapperType(String.class)); // false System.out.println(isWrapperType(Integer.class)); // true } private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes(); public static boolean isWrapperType(Class<?> clazz) { return WRAPPER_TYPES.contains(clazz); } private static Set<Class<?>> getWrapperTypes() { Set<Class<?>> ret = new HashSet<Class<?>>(); ret.add(Boolean.class); ret.add(Character.class); ret.add(Byte.class); ret.add(Short.class); ret.add(Integer.class); ret.add(Long.class); ret.add(Float.class); ret.add(Double.class); ret.add(Void.class); return ret; } }</code>
Penyelesaian ini menggunakan HashSet untuk menyimpan jenis pembalut. Apabila menyemak sama ada kelas ialah pembungkus, set digunakan untuk mengesahkan sama ada ia mengandungi kelas itu.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan sama ada Objek ialah Jenis Pembungkus untuk Nilai Primitif di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!