Java 泛型的含义是什么<&燃气轮机;返回类型类之前<&燃气轮机;

Java 泛型的含义是什么<&燃气轮机;返回类型类之前<&燃气轮机;,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

我见过几个例子,像下面这样,返回类型包含两次泛型

第一个集合的含义是什么,我理解该方法应该返回一个包含C类型元素的数组类,但什么是第一个C

     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);