返回Java通用方法的类型

时间:2012-07-07 17:39:11

标签: java generics methods return-value enumeration

我想知道为什么返回任何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>在这个案例中的具体含义是什么?通常在一般方法中是什么意思?

5 个答案:

答案 0 :(得分:86)

这个问题适合我的一个旧笔记。我希望这个例子有所帮助:

enter image description here enter image description here

答案 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 可以替换为整数