您可以使用instanceOf来确定对象是否为数组,然后在该数组上进行迭代吗?

时间:2019-05-30 18:53:26

标签: java

说我有一个方法可以接受java对象(Java.lang.Object)的实例作为参数。有没有一种方法可以确定传入的Object是否是一个数组(包含任何东西),然后对其进行迭代?

这是我目前正在尝试做的事情

public static void isThisAnArray(Object x) {
     if (x instanceof Object[]){
         for (Object item : x) {
             //do something with item
         }
     }
}

但是我在for (Object item : x)行上看到“只能迭代数组或java.lang.Iterable实例”,这很有意义,因为我传递的是对象而不是对象数组。但是,如果该对象是对象数组怎么办?抱歉,这很令人困惑,但是有没有办法确定传入的Java对象是否是数组?

1 个答案:

答案 0 :(得分:4)

将内容放入具有instanceof的条件中不会神奇地使编译器知道该事物是该实例的一个实例。实际上,您必须进行投射:

if (x instanceof Object[]){
  for (Object item : (Object[]) x) {
  }
}