ホームページ  >  記事  >  Java  >  高度な Java チュートリアル: ジェネリック メソッド

高度な Java チュートリアル: ジェネリック メソッド

黄舟
黄舟オリジナル
2016-12-27 11:35:061508ブラウズ

呼び出されたときにさまざまなタイプのパラメータを受け取ることができるジェネリック メソッドを作成できます。ジェネリック メソッドに渡されるパラメーターの型に応じて、コンパイラーは各メソッド呼び出しを適切に処理します。

ジェネリックメソッドを定義するためのルールは次のとおりです:

すべてのジェネリックメソッド宣言には、メソッドの戻り値の型の前に型パラメーター宣言部分 (山かっこで区切られた) があります (以下の例)。

各型パラメータ宣言部分には、カンマで区切られた 1 つ以上の型パラメータが含まれます。ジェネリック パラメーターは型変数とも呼ばれ、ジェネリック型の名前を指定する識別子です。

型パラメーターは戻り値の型を宣言するために使用でき、ジェネリック メソッドによって取得される実際のパラメーター型のプレースホルダーとして機能します。

ジェネリックメソッドのメソッド本体の宣言は他のメソッドと同様です。型パラメーターは参照型のみを表すことができ、プリミティブ型 (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」が「拡張」(クラス)または「実装」(インターフェース)を意味する一般的な意味でどのように使用されるかを示しています。この例のジェネリック メソッドは、3 つの比較可能なオブジェクトの最大値を返します。

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 Advanced Tutorial: Generic Methods の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。