我想知道为什么返回任何void
的泛型方法都是(或可以)以这种方式声明:
public static <E> void printArray( E[] inputArray ) {
// Display array elements
for ( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
似乎<E>
是返回对象的类型,但该方法实际上没有返回任何内容。那么<E>
在这个案例中的具体含义是什么?通常在一般方法中是什么意思?
答案 0 :(得分:86)
这个问题适合我的一个旧笔记。我希望这个例子有所帮助:
答案 1 :(得分:8)
<E>
是泛型类型参数声明。这意味着“此方法具有单个类型参数,称为E
,可以是任何类型”。
这不是返回类型 - 在类型参数声明之后出现,就在方法名称之前。因此,问题中printArray
方法的返回类型仍为void
。
有关方法声明的更多详细信息,请参阅section 8.4 of the JLS。
答案 2 :(得分:3)
这不是返回对象的类型。它表示方法签名中的E
是泛型类型而不是具体类型。没有它,编译器会为方法的参数寻找一个名为E
的类。
答案 3 :(得分:2)
&lt; E>被称为形式类型参数。它不是该方法的返回类型。它基本上说该方法可以接受不同类型的参数数组(E [] inputArray)。
答案 4 :(得分:1)
E 用作此函数调用时将传递给Gen函数的实际类型的占位符。
假设 E 可以替换为整数