Sie können verwenden instanceof.
RelationalExpression:
RelationalExpression instanceof ReferenceType
Zur Laufzeit ist das Ergebnis des instanceofOperators, truewenn der Wert von RelationalExpression nicht lautet nullund die Referenz in den ReferenceType umgewandelt werden kann, ohne a auszulösen ClassCastException. Ansonsten ist das Ergebnis false.
Das heißt, Sie können so etwas tun:
Object o = new int[] { 1,2 };
System.out.println(o instanceof int[]); // prints "true"
Sie müßten überprüfen , ob das Objekt ein instanceof boolean[], byte[], short[], char[], int[], long[], float[], double[], oder Object[], wenn Sie alle Array - Typen erkannt werden sollen.
Außerdem int[][]ist an ein instanceof Object[]. Je nachdem, wie Sie mit verschachtelten Arrays umgehen möchten, kann dies kompliziert werden.
Für die toString, java.util.Arrayshat eine toString(int[])und andere Überlastungen Sie verwenden können. Es hat auch deepToString(Object[])für verschachtelte Arrays.
public String toString(Object arr) {
if (arr instanceof int[]) {
return Arrays.toString((int[]) arr);
} else //...
}
Es wird sich sehr wiederholen (aber es wird sich auch java.util.Arrayssehr wiederholen ), aber so ist es in Java mit Arrays.
Siehe auch
obj.getClass().getComponentType().