if(obj.getClass().isArray()) {}
andif(obj instanceof Object[]) {}
?In general, use the
instanceof operator to test whether an object is an array.At the JVM level, the
instanceof operator translates to a specific "instanceof" byte code, which is highly optimized in most JVM implementations.The reflective approach (
getClass().isArray()) is compiled to two separate "invokevirtual"
instructions. The more generic optimizations applied by the JVM to
these may not be as fast as the hand-tuned optimizations inherent in the
"instanceof" instruction.There are two special cases: null references and references to primitive arrays.
A null reference will cause
instanceof to result false, while the isArray throws a NullPointerException.Applied to a primitive array, the
instanceof yields false unless the right-hand operand exactly matches the component type. In contrast, isArray() will return true for any component type.@reference_1-stackoverflow
Java array reflection: isArray vs. instanceof
Object o = new int[] { 1,2 };
System.out.println(o instanceof int[]); // prints "true"
How to see if an object is an array without using reflection?
No comments:
Post a Comment