Java泛型:语法解释

Java泛型:语法解释,java,generics,Java,Generics,我是java泛型新手,我的问题是: public static < E > void printArray( E[] inputArray ) 我的参考计划是 public class GenericMethodTest { // generic method printArray public static < E > void printArray( E[] inputArray ) {

我是java泛型新手,我的问题是:

public static < E > void printArray( E[] inputArray )
我的参考计划是

public class GenericMethodTest
{
   // generic method printArray                         
   public static < E > void printArray( E[] inputArray )
   {
      // Display array elements              
         for ( E element : inputArray ){        
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }

    public static void main( String args[] )
    {
        // Create arrays of Integer, Double and Character
        Integer[] intArray = { 1, 2, 3, 4, 5 };
        Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
        Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

        System.out.println( "Array integerArray contains:" );
        printArray( intArray  ); // pass an Integer array

        System.out.println( "\nArray doubleArray contains:" );
        printArray( doubleArray ); // pass a Double array

        System.out.println( "\nArray characterArray contains:" );
        printArray( charArray ); // pass a Character array
    } 
}
公共类GenericMethodTest
{
//通用方法printArray
公共静态无效打印阵列(E[]输入阵列)
{
//显示数组元素
对于(E元素:inputArray){
System.out.printf(“%s”,元素);
}
System.out.println();
}
公共静态void main(字符串参数[])
{
//创建整数、双精度和字符数组
整数[]intArray={1,2,3,4,5};
Double[]doubleArray={1.1,2.2,3.3,4.4};
字符[]charArray={'H','E','L','L','O'};
System.out.println(“数组整数数组包含:”);
printary(intArray);//传递一个整数数组
System.out.println(“\n数组包含:”);
printArray(doubleArray);//传递一个双数组
System.out.println(“\nArray characterArray包含:”);
printary(charArray);//传递字符数组
} 
}

公共静态无效打印阵列(E[]输入阵列)
中,
E
仅用于表示通用参数。方法的返回类型仍然是
void

此处的
与返回类型无关;这意味着这是一个通用函数,可以接受各种类型的数组。为了便于理解,代码可以是这样的:

public class GenericMethodTest
{
   // generic method printArray                         
   public static < E > void printArray( E[] inputArray )
   {
      // Display array elements              
         for ( E element : inputArray ){        
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }

    public static void main( String args[] )
    {
        // Create arrays of Integer, Double and Character
        Integer[] intArray = { 1, 2, 3, 4, 5 };
        Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
        Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

        System.out.println( "Array integerArray contains:" );
        GenericMethodTest.<Integer>printArray( intArray  ); // pass an Integer array

        System.out.println( "\nArray doubleArray contains:" );
        GenericMethodTest.<Double>printArray( doubleArray ); // pass a Double array

        System.out.println( "\nArray characterArray contains:" );
        GenericMethodTest.<Character>printArray( charArray ); // pass a Character array
    } 
}
公共类GenericMethodTest
{
//通用方法printArray
公共静态无效打印阵列(E[]输入阵列)
{
//显示数组元素
对于(E元素:inputArray){
System.out.printf(“%s”,元素);
}
System.out.println();
}
公共静态void main(字符串参数[])
{
//创建整数、双精度和字符数组
整数[]intArray={1,2,3,4,5};
Double[]doubleArray={1.1,2.2,3.3,4.4};
字符[]charArray={'H','E','L','L','O'};
System.out.println(“数组整数数组包含:”);
GenericMethodTest.printArray(intArray);//传递整数数组
System.out.println(“\n数组包含:”);
GenericMethodTest.printArray(doubleArray);//传递双数组
System.out.println(“\nArray characterArray包含:”);
GenericMethodTest.printArray(charArray);//传递字符数组
} 
}
因此,
告诉函数什么“有一个泛型
E
,你接受
E
的数组,所以如果我用泛型
整数给你打电话
你接受
整数[]

但它不会改变返回类型。就像
publicstatic
不会更改返回类型一样。

通过
您可以定义一个通用变量类型,如果您要编写

public static void printArray( E[] inputArray )
Java将尝试查找名为
E
的类,因为您没有将
E
定义为泛型。
在这两种情况下,返回值都为空,此
通用定义部分不是返回值的一部分,而是一个单独的函数签名块。

[Dmitry Spikhalskiy]谢谢先生:)[Blalasaadri]先生谢谢:)[Rrevo]先生比您:)
public static void printArray( E[] inputArray )