В этой статье мы разберемся с различными способами проверки того, является ли объект массивом в java, с примерами.

1. Использование метода isArray()

java.lang.Class имеет метод isArray(), который возвращает значение true, если объект, для которого он вызывается, представляет класс массива.
Чтобы получить объект класса для объекта, вызовите метод getClass(). Пример

int[] arr = new int[]{1, 2, 3};

if (arr.getClass().isArray()) {
    System.out.println("Object is an array");
} else {
    System.out.println("Object is not an array");
}

Документация по isArray() состояниям метода,

Определяет, представляет ли этот объект Class класс массива.

2. Использование экземпляра

Оператор экземпляра Java проверяет, относится ли объект слева от него к типу класса справа, и возвращает true или false соответственно. Пример

int[] arr = new int[]{1, 2, 3}; 
if (arr instanceof int[]) { 
  System.out.println("Object is an array"); 
} else { 
  System.out.println("Object is not an array"); 
}

В этом примере мы используем оператор instanceof, чтобы проверить, является ли переменная массива экземпляром типа массива int[].

instanceof более лаконичен, чем isArray().
Однако его можно использовать только для проверки определенного типа массива, такого как int[] в приведенном выше примере.

Для проверки массивов разных типов нам нужно использовать все массивы с instanceof, как показано ниже.

public boolean isArray(Object obj) {
    return (obj instanceof boolean[] || 
      obj instanceof byte[] || obj instanceof short[] || 
      obj instanceof char[] || obj instanceof int[] || 
      obj instanceof long[] || obj instanceof float[] || 
      obj instanceof double[] || obj instanceof Object[] );
}

Этот метод будет работать для объектов всех типов, которые на самом деле являются массивами, даже для наших пользовательских объектов.

Надеюсь, статья была полезной.
Оригинал статьи здесь.