tutorial resueltos nxn matriz matrices manejar explicacion ejemplos bidimensionales arreglos 3x3 java reflection

java - resueltos - Iterando sobre matrices por reflexión.



matriz nxn java (4)

Estoy haciendo un trabajo de reflexión y voy a un pequeño problema.

Estoy intentando imprimir objetos en algún árbol de GUI y tengo problemas para detectar matrices de una manera genérica.

Sugerí que:

objeto instanceof Iterable

Haría el trabajo, pero no lo hace (obviamente se aplica solo a Listas y Conjuntos y quien lo implemente).

Entonces, ¿cómo es que reconocería un Array Some Object[] , O long[] o Long[] ..?

Gracias


¿Se Object.getClass().isArray() ?


En primer lugar, la respuesta de @Bozho es perfectamente correcta.

Si desea que sea más fácil de utilizar, acabo de crear un método en nuestra pequeña utilidad OSS molindo-utils que convierte una matriz de tipo desconocido en un Iterable: ArrayUtils.toIterable(Object)

De esta manera, puedes hacer:

// any array, e.g. int[], Object[], String[], ... Object array = ...; for (Object element : ArrayUtils.toIterable(array)) { // element of type Integer for int[] System.out.println(element); }

Vea README de molindo-utils sobre cómo obtener molindo-utils o siéntase libre de copiar el código si lo desea, como mejor le parezca.


Si no solo desea comprobar si el objeto es una matriz, sino también iterarlo:

if (array.getClass().isArray()) { int length = Array.getLength(array); for (int i = 0; i < length; i ++) { Object arrayElement = Array.get(array, i); System.out.println(arrayElement); } }

(la clase anterior es java.lang.reflect.Array )


Tu puedes hacer

if (o instanceof Object[]) { Object[] array = (Object[]) o; // now access array.length or // array.getClass().getComponentType() }