Java 如何生成Class<;类型的数组;?扩展某物>;?
我有以下代码,但无法编译:Java 如何生成Class<;类型的数组;?扩展某物>;?,java,arrays,class,reflection,Java,Arrays,Class,Reflection,我有以下代码,但无法编译: Class<? extends something>[] classes = new Class<? extends something>[5](); Class我想你应该试着从上一个 Class<? extends something>[] classes = new Class<? extends something>[5]; Class答案与 该规则明确规定: 上面的规则意味着数组创建中的元素类型 表达式不能是
Class<? extends something>[] classes = new Class<? extends something>[5]();
Class我想你应该试着从上一个
Class<? extends something>[] classes = new Class<? extends something>[5];
Class答案与
该规则明确规定:
上面的规则意味着数组创建中的元素类型
表达式不能是参数化类型,而不能是无界类型
通配符
这就是为什么上面的代码永远不会编译。事实上,以下编译时错误消息显示(示例):
/**
*
*/
/**
*@作者精英绅士
*
*/
公开课考试{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
类别[5];
上面这一行是编译的
我希望这能有所帮助。我不确定那些括号是否是故意的,但它们不属于那里(语法错误)。顺便说一句,如果你删除它们,那么类
将起作用。可能的重复我清楚地解释了为什么下面的语句不编译。关于SO的许多答案都没有解释为什么它不编译,只是说它不编译。你试过编译它吗?例如试试Class@dku.rajkumar:哦!我就知道。它尽管“无法创建ClassIt的泛型数组”,但仍然给了我同样的错误。但是,可以根据声明ClassIt必须是完全无界的,才能使数组工作。
/**
*
*/
/**
* @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];
}
}
Class<? >[] classes = new Class<?>[5];