Você pode usar instanceof
.
RelationalExpression:
RelationalExpression instanceof ReferenceType
Em tempo de execução, o resultado do instanceof
operador é true
se o valor de RelationalExpression não for null
e 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.Arrays
tem 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()
.