类型不匹配:无法从Class <capture#1-of?=“”>转换为Class <! - ? - > [] </capture#1-of>

时间:2014-11-02 14:01:44

标签: java reflection syntax-error

这是什么意思,以下错误消息:

Type mismatch: cannot convert from Class<capture#1-of ?> to Class<?>[]

代码如下:

            Class<?>[] encoderClass;
            Class<?>[] encoderClasses = new Class<?>[] {
                Encoder1.class,
                Encoder2.class,
                Encoder3.class
            };

            for(int i=0; i<encoderClasses.length; ++i) {
                encoderClass = encoderClasses[i]; // <------ error is here
            }

更新

哦,只是愚蠢的错误,谢谢......

2 个答案:

答案 0 :(得分:2)

您正在尝试将单个类元素分配给类数组(根据错误消息的不同类型)。而是在for循环中分配每个单独的元素

encoderClass[i] = encoderClasses[i];

确保初始化数组以避免在赋值中使用NPE

Class<?>[] encoderClass = new Class<?>[3];

为简单起见,您可以用

替换整个循环
encoderClass = Arrays.copyOf(encoderClasses,  encoderClasses.length);

答案 1 :(得分:1)

您期待来自Class的数组。

您应该更改以下内容:

Class<?>[] encoderClass;

要:

Class<?> encoderClass;