Java的泛型方法的返回类型(Return Type of Java Generic Methods

2019-06-14 17:38发布

我不知道为什么通用方法,返回什么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>在这种情况下,特别是在通用的方法一般?

Answer 1:

这个问题适合我的旧钞之一。 我希望这说明帮助:



Answer 2:

所述<E>是通用类型参数声明。 它的意思是“这种方法有一个单一类型参数,称为E ,其可以是任何类型的”。

这不是返回类型-随附类型参数声明之后 ,就在方法名之前。 所以的返回类型printArray方法在你的问题仍是void

参见JLS的第8.4关于方法声明的更多细节。



Answer 3:

这不是返回对象的类型。 这表明E ,在方法签名,是一个泛型类型,而不是一个具体类型。 没有它,编译器会寻找一个名为类E的方法的参数。



Answer 4:

所述<E>被称为正式类型参数。 这不是方法的返回类型。 它基本上说,该方法可作为不同类型的参数阵列接受(E [] inputArray)。



Answer 5:

E被用作将被传递到第二代功能时,该功能将调用的实际类型的占位符。

假设E可通过整数来代替



文章来源: Return Type of Java Generic Methods