Java 泛型的含义是什么<&燃气轮机;返回类型类之前<&燃气轮机;
我见过几个例子,像下面这样,返回类型包含两次泛型 第一个集合的含义是什么,我理解该方法应该返回一个包含C类型元素的数组类,但什么是第一个CJava 泛型的含义是什么<&燃气轮机;返回类型类之前<&燃气轮机;,java,generics,Java,Generics,我见过几个例子,像下面这样,返回类型包含两次泛型 第一个集合的含义是什么,我理解该方法应该返回一个包含C类型元素的数组类,但什么是第一个C public static <C> Class<C[]> arrayClass(Class<C> klass) { return (Class<C[]>) Array.newInstance(klass, 0).getClass(); } 公共静态类arrayClass(类k
public static <C> Class<C[]> arrayClass(Class<C> klass) {
return (Class<C[]>) Array.newInstance(klass, 0).getClass();
}
公共静态类arrayClass(类klass){
return(Class)Array.newInstance(klass,0.getClass();
}
这是一个泛型参数的声明,在您的例子中,它被命名为C
,但它几乎可以是任何东西。(有一些限制,如保留关键字和一般java命名限制)
它用于告诉java,在方法的上下文中,C
是一种泛型类型
如果没有它,java将尝试解析C
,并检查类
,接口
等是否存在
请参见此示例:
public static <String> Class<String[]> arrayClass(Class<String> klass) {
return (Class<String[]>) Array.newInstance(klass, 0).getClass();
}
但是当我从方法中删除
时,它将失败,因为java现在假定您的意思是java.lang.String
:
// compile error:
// Required type Class<String>
// provided Class<Integer>
Class<Integer[]> klass = arrayClass(Integer.class);
//编译错误:
//必需类型类
//提供类
类klass=arrayClass(Integer.Class);
这是否回答了您的问题<结果类型之前的代码>是泛型参数声明,Class
是具体的结果类型,也可以是String或int。
// compile error:
// Required type Class<String>
// provided Class<Integer>
Class<Integer[]> klass = arrayClass(Integer.class);