Можна використовувати instanceof.
RelationalExpression:
RelationalExpression instanceof ReferenceType
Під час виконання результатом instanceofоператора є, trueякщо значення RelationalExpression не є nullі посилання може бути передане на ReferenceType без підвищення a ClassCastException. Інакше результат є false.
Це означає, що ви можете зробити щось подібне:
Object o = new int[] { 1,2 };
System.out.println(o instanceof int[]); // prints "true"
Ви повинні були б перевірити , якщо об'єкт є instanceof boolean[], byte[], short[], char[], int[], long[], float[], double[], або Object[], якщо ви хочете , щоб виявити всі типи масиву.
Крім того, an int[][]є instanceof Object[], тому залежно від способу обробки вкладених масивів це може ускладнитися.
Для toString, java.util.Arraysмає toString(int[])та інші перевантаження, які ви можете використовувати. Він також має deepToString(Object[])вкладені масиви.
public String toString(Object arr) {
if (arr instanceof int[]) {
return Arrays.toString((int[]) arr);
} else //...
}
Це буде дуже повторюваним (але навіть java.util.Arraysдуже повторюваним ), але це так, як у Java з масивами.
Дивитися також
obj.getClass().getComponentType().