Puede utilizar instanceof.
RelationalExpression:
RelationalExpression instanceof ReferenceType
En tiempo de ejecución, el resultado del instanceofoperador es truesi el valor de RelationalExpression no lo es nully la referencia podría convertirse en ReferenceType sin generar un ClassCastException. De lo contrario, el resultado es false.
Eso significa que puedes hacer algo como esto:
Object o = new int[] { 1,2 };
System.out.println(o instanceof int[]); // prints "true"
Habría que comprobar si el objeto es una instanceof boolean[], byte[], short[], char[], int[], long[], float[], double[], o Object[], si se quiere detectar todos los tipos de matriz.
Además, an int[][]es an instanceof Object[], por lo que, dependiendo de cómo desee manejar las matrices anidadas, puede complicarse.
Para el toString, java.util.Arraystiene una toString(int[])y otras sobrecargas que puede usar. También tiene deepToString(Object[])para matrices anidadas.
public String toString(Object arr) {
if (arr instanceof int[]) {
return Arrays.toString((int[]) arr);
} else //...
}
Va a ser muy repetitivo (pero incluso java.util.Arraysmuy repetitivo ), pero así es en Java con matrices.
Ver también
obj.getClass().getComponentType().