返回Java通用方法的类型

24 java generics methods enumeration return-value

我想知道为什么返回任何内容的泛型方法void都是(或可以)以这种方式声明:

   public static <E> void printArray( E[] inputArray ) {
     // Display array elements              
     for ( E element : inputArray ){        
        System.out.printf( "%s ", element );
     }
     System.out.println();
   }
Run Code Online (Sandbox Code Playgroud)

它似乎<E>是返回对象的类型,但该方法实际上没有返回任何内容.那么<E>在这种情况下,具体和通用方法的真正含义一般是什么?

Jop*_*ops 94

这个问题适合我的一个旧笔记.我希望这个例子有助于:

在此输入图像描述 在此输入图像描述

  • 我不会投反对票,但就格式而言,这是垃圾答案——不可搜索、不可复制等。 (3认同)
  • 很好的答案+ 1,可能值得一提的是,在第一个方法中,您可以使用 Void (大写“V”)作为返回类型 T...尽管“y”必须具有空值 (2认同)

Jon*_*eet 8

<E>是泛型类型参数声明.这意味着"此方法具有单个类型参数,称为E"可以是任何类型".

这不是返回类型-随附的类型参数声明,只是方法名之前.所以printArray你问题中方法的返回类型仍然存在void.

有关方法声明的更多详细信息,请参见JLS的8.4节.


JB *_*zet 5

它不是返回对象的类型。它表明E,在方法签名中,是泛型类型而不是具体类型。没有它,编译器将查找以E方法参数命名的类。