Determining if an Object is Primitive
Question:
When dealing with an Object[] array, how can you identify which elements represent primitive values? Using Class.isPrimitive() appears to yield incorrect results.
Answer:
Understanding that the elements in an Object[] array are references to objects, it becomes clear that Class.isPrimitive() will always return false. To determine if an object is a "wrapper for primitive" (e.g., Integer for int), a custom approach is necessary.
Here's a Java code snippet that demonstrates a solution:
<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<>(); 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>
By utilizing this approach, you can accurately determine whether an object in an Object[] array represents a primitive value or a wrapper class for a primitive value.
The above is the detailed content of How to Identify Primitive Values in an Object[] Array?. For more information, please follow other related articles on the PHP Chinese website!