2010-02-02 12 views
5

¿Hay alguna incorporado en el método java6 (tal vez en Lang o de la reflexión?) Para realizar:Object [] a la Clase [] en Java

private Class[] getTypes(final Object[] objects) { 
    final Class[] types = new Class[objects.length]; 
    for (int i = 0; i < objects.length; i++) { 
     types[i] = objects[i].getClass(); 
    } 
    return types; 
} 

que tiene una serie de objetos y devuelve una matriz que contiene el tipo de cada elemento?

+0

Hasta donde yo sé, esa es la mejor manera de hacerlo en Java. – jjnguy

+0

Ese 'for (..)' loop podría ser reemplazado por 'for (Object o: objects)' que mejora la legibilidad * (pero luego tendrías que contar el índice por separado, hrm :)) *. Pero sí, esta es básicamente la forma de hacerlo en Java. – Esko

Respuesta

5

No, no hay una función incorporada para esto en JavaSE.

No es una gran carga, sin duda, es fácilmente comprobable por unidad y solo unas pocas líneas.

Si realmente quería algo que no escribe usted mismo, hay varias bibliotecas 3 ª parte que lo hará por usted (por ejemplo, de ClassUtils Apache Commons Lang, CGLIB de ReflectUtils), por lo que si ya tiene uno de esos, puede usarlos

+0

ClassUtils, no ObjectUtils, creo :) – Bozho

+0

utils, utils, everywhere .... – skaffman

+1

Terminé usando * ClassUtils.toClass *. Un método menos para que yo pueda mantener. ¡Gracias! – rcampbell

1

Creo que lambdaj tiene características para este tipo de cosas.

1

No, no hay mejor manera de hacerlo. Sin embargo, no creo que importe mucho. Ya ha empaquetado su código como un método reutilizable. Si necesita usarlo de varias clases distintas, conviértase en un método público estático en alguna clase de utilidad.

Una vez que haya hecho eso, para todos los fines prácticos, tiene una manera conveniente para convertir un conjunto de objetos ab en una matriz de clases. En otras palabras, si ya implementó un determinado servicio de forma reutilizable, entonces amplió efectivamente su conjunto de herramientas. No importa que este servicio específico no sea parte de JRE "estándar".

Cuestiones relacionadas