我有以下代码,但不会编译:
Class<? extends something>[] classes = new Class<? extends something>[5]();
为什么这不起作用?有没有办法解决这个问题?我也用Class<?>
尝试过,但也没用。
答案 0 :(得分:4)
答案与Array Creation Expression有关。
该规则明确指出:
上述规则意味着数组创建中的元素类型 表达式不能是参数化类型,而不是无界限 通配符强>
这就是为什么你的上面的代码永远不会编译。实际上,以下编译时错误消息显示(示例):
/**
*
*/
/**
* @author The Elite Gentleman
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Class<? extends Exception>[] classes = new Class<? extends Exception>[5];
}
}
Test.java:17:通用数组创建
解决方案(如果您遵循上述规则,则有效):
Class<? >[] classes = new Class<?>[5];
以上一行编译。
我希望这会有所帮助。
答案 1 :(得分:-1)
我认为您应该尝试从上一个
中删除()
Class<? extends something>[] classes = new Class<? extends something>[5];