Pregunta Object [] a Class [] en Java


¿Hay algún método Java6 incorporado (quizás en lang o reflexión?) Para realizar:

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;
}

¿Qué toma una matriz de objetos y devuelve una matriz que contiene el tipo de cada elemento?


5
2018-02-02 08:26


origen


Respuestas:


No, no hay ninguna instalación integrada para esto en JavaSE.

No es una carga muy grande, seguramente, es fácilmente verificable por unidad y solo unas pocas líneas.

Si realmente deseabas algo que no escribes, hay varias bibliotecas de terceros que lo harán por ti (por ejemplo, Apache Commons Lang ClassUtils, CGLIB's ReflectUtils), así que si ya tienes uno de esos, puedes usarlos.


5
2018-02-02 08:32



En JDK - no. Hay en apache commons-lang:

ClassUtils.toClass(Object[] objects)

Pero escribirlo tú mismo no es doloroso en absoluto.


2
2018-02-02 08:33



creo lambdaj tiene características para este tipo de cosas.


1
2018-02-02 08:33



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

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


1
2018-02-02 08:38