Você pode usar instanceof.
RelationalExpression:
RelationalExpression instanceof ReferenceType
Em tempo de execução, o resultado do instanceofoperador é truese o valor de RelationalExpression não for nulle a referência puder ser convertida em ReferenceType sem gerar a ClassCastException. Caso contrário, o resultado é false.
Isso significa que você pode fazer algo assim:
Object o = new int[] { 1,2 };
System.out.println(o instanceof int[]); // prints "true"
Você teria que verificar se o objeto é um instanceof boolean[], byte[], short[], char[], int[], long[], float[], double[], ou Object[], se você quiser detectar todos os tipos de matriz.
Além disso, um int[][]é um instanceof Object[], portanto, dependendo de como você deseja lidar com matrizes aninhadas, pode ficar complicado.
Para o toString, java.util.Arraystem um toString(int[])e outras sobrecargas que você pode usar. Também tem deepToString(Object[])para matrizes aninhadas.
public String toString(Object arr) {
if (arr instanceof int[]) {
return Arrays.toString((int[]) arr);
} else //...
}
Vai ser muito repetitivo (mas até java.util.Arraysé muito repetitivo ), mas é assim em Java com arrays.
Veja também
obj.getClass().getComponentType().