在大多数情况下,应使用
instanceof运算符测试对象是否为数组。
通常,您需要先测试对象的类型,然后再向下转换为编译时已知的特定类型。例如,也许您编写了一些可以使用
Integer[]或的代码
int[]。您想使用以下方法保护自己的演员
instanceof:
if (obj instanceof Integer[]) { Integer[] array = (Integer[]) obj; } else if (obj instanceof int[]) { int[] array = (int[]) obj; } else ...在JVM级别,
instanceof操作员将转换为特定的“实例”字节代码,该代码在大多数JVM实现中都得到了优化。
在极少数情况下,您可能会使用反射遍历未知类型的对象图。在这种情况下,该
isArray()方法可能会有所帮助,因为您在编译时不知道组件类型。例如,您可能正在实现某种序列化机制,并且能够将数组的每个组件传递给相同的序列化方法,而不论其类型如何。
有两种特殊情况:空引用和对原始数组的引用。
空引用将导致
instanceof结果
false,而
isArray引发
NullPointerException。
施加到一个原始阵列,所述
instanceof产量
false除非在右边的操作数完全相同的组件类型的组件类型相匹配。相反,
isArray()将返回
true任何组件类型。



