Объект [] в класс [] в Java - PullRequest
5 голосов
/ 02 февраля 2010

Есть ли какой-нибудь встроенный метод Java6 (возможно, в lang или отражении?) Для выполнения:

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

Что принимает массив объектов и возвращает массив, содержащий тип каждого элемента?

Ответы [ 4 ]

5 голосов
/ 02 февраля 2010

Нет, в JavaSE нет встроенного средства для этого.

Несложная нагрузка, конечно, он легко тестируется юнитом и занимает всего несколько строк.

Если вы действительно хотели что-то, что не написали сами, есть различные сторонние библиотеки, которые сделают это за вас (например, Apache Commons Lang's ClassUtils, CGLIB ReflectUtils), так что если у вас уже есть те, вы можете использовать их.

2 голосов
/ 02 февраля 2010

В JDK - нет. Есть в apache commons-lang :

ClassUtils.toClass(Object[] objects)

Но писать это самостоятельно совсем не больно.

1 голос
/ 02 февраля 2010

Нет, лучшего способа сделать это не существует. Тем не менее, я не думаю, что это имеет большое значение. Вы уже упаковали свой код как метод многократного использования. Если вам нужно использовать его из нескольких отдельных классов, просто превратитесь в публичный статический метод в каком-то служебном классе.

Как только вы это сделаете, тогда для всех практических целей у вас есть удобный способ конвертировать массив объектов в массив классов. Другими словами, если вы уже внедрили определенный сервис с возможностью повторного использования, вы фактически расширили свой инструментарий. Неважно, что этот конкретный сервис не является частью «стандартной» JRE.

1 голос
/ 02 февраля 2010

Я думаю, лямбдай имеет функции для такого рода вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...