首頁  >  文章  >  Java  >  Java進階教學:泛型方法

Java進階教學:泛型方法

黄舟
黄舟原創
2016-12-27 11:35:061553瀏覽

 你可以寫一個泛型方法,該方法在呼叫時可以接收不同類型的參數。根據傳遞給泛型方法的參數類型,編譯器適當地處理每一個方法呼叫。

  下面是定義泛型方法的規則:

  所有泛型方法聲明都有一個類型參數聲明部分(由尖括號分隔),該類型參數聲明部分在方法返回類型之前(在下面例子中的)。

  每一個類型參數聲明部分包含一個或多個型別參數,參數間以逗號隔開。一個泛型參數,也被稱為一個類型變量,是用來指定一個泛型類型名稱的識別碼。

  類型參數能被用來宣告傳回值類型,並且能作為泛型方法得到的實際參數類型的佔位符。

  泛型方法方法體的聲明和其他方法一樣。注意型別參數只能代表引用型別類型,不能是原始型別(像int,double,char的等)。

  實例

  下面的例子示範如何使用泛型方法列印不同字串的元素:

public class GenericMethodTest
{
   // 泛型方法 printArray                         
   public static < E > void printArray( E[] inputArray )
   {
      // 输出数组元素            
         for ( E element : inputArray ){        
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }
 
    public static void main( String args[] )
    {
        // 创建不同类型数组: Integer, Double 和 Character
        Integer[] intArray = { 1, 2, 3, 4, 5 };
        Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
        Character[] charArray = { &#39;H&#39;, &#39;E&#39;, &#39;L&#39;, &#39;L&#39;, &#39;O&#39; };
 
        System.out.println( "Array integerArray contains:" );
        printArray( intArray  ); // 传递一个整型数组
 
        System.out.println( "\nArray doubleArray contains:" );
        printArray( doubleArray ); // 传递一个双精度型数组
 
        System.out.println( "\nArray characterArray contains:" );
        printArray( charArray ); // 传递一个字符型型数组
    } 
}
编译以上代码,运行结果如下所示:
 
Array integerArray contains:
1 2 3 4 5 6
  
Array doubleArray contains:
1.1 2.2 3.3 4.4
  
Array characterArray contains:
H E L L O

  有界的類型參數:

     有界的類型參數:

    類型種類範圍。例如,一個操作數字的方法可能只希望接受Number或Number子類別的實例。這就是有界類型參數的目的。

  要聲明一個有界的型別參數,先列出型別參數的名稱,後面接著extends關鍵字,最後再緊跟它的上界。

  實例

  下面的例子示範了"extends"如何使用在一般意義上的意思"extends"(類)或"implements"(接口)。此範例中的泛型方法傳回三個可比較物件的最大值。

public class MaximumTest
{
   // 比较三个值并返回最大值
   public static > T maximum(T x, T y, T z)
   {                     
      T max = x; // 假设x是初始最大值
      if ( y.compareTo( max ) > 0 ){
         max = y; //y 更大
      }
      if ( z.compareTo( max ) > 0 ){
         max = z; // 现在 z 更大           
      }
      return max; // 返回最大对象
   }
   public static void main( String args[] )
   {
      System.out.printf( "Max of %d, %d and %d is %d\n\n",
                   3, 4, 5, maximum( 3, 4, 5 ) );
  
      System.out.printf( "Maxm of %.1f,%.1f and %.1f is %.1f\n\n",
                   6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ) );
  
      System.out.printf( "Max of %s, %s and %s is %s\n","pear",
         "apple", "orange", maximum( "pear", "apple", "orange" ) );
   }
}
编译以上代码,运行结果如下所示:
 
Maximum of 3, 4 and 5 is 5
  
Maximum of 6.6, 8.8 and 7.7 is 8.8
  
Maximum of pear, apple and orange is pear

 以上就是Java進階教學:泛型方法的內容,更多相關內容請關注PHP中文網(www.php.cn)!


🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn