如何将Class对象列表转换为数组?

时间:2017-07-21 05:18:34

标签: java

我在List中有一些我想要转换为数组的Class对象。 以下是我的代码:

private static Class<?>[] getClasses(final Object[] params) {
    List<Class<?>> classList = new ArrayList<>();

    for (final Object param : params) {
        classList.add(param.getClass());
    }

    return (Class<?>[]) classList.toArray();
}

我理解toArray()返回一个Object []。有没有办法避免演员?

2 个答案:

答案 0 :(得分:2)

您可以创建一个新数组并逐个放入每个元素:

Class<?>[] classes = new Class<?>[classList.size()];
for (int i = 0 ; i < classList.size() ; i++) {
    classes[i] = classList.get(i);
}

或者,不使用列表重写整个方法:

    private static Class<?>[] getClasses(final Object[] params) {
        Class<?>[] classList = new Class<?>[params.length];

        for (int i = 0 ; i < classList.length ; i++) {
            classList[i] = params[i].getClass();
        }

        return classList;
    }

答案 1 :(得分:2)

您可以将toArray方法与数组一起用作参数:

return classList.toArray(new Class<?>[classList.size()]);