ホームページ >Java >&#&チュートリアル >Java関数ジェネリックの境界と制約の詳細な説明

Java関数ジェネリックの境界と制約の詳細な説明

王林
王林オリジナル
2024-04-27 09:45:02831ブラウズ

Java 関数ジェネリックを使用すると、さまざまなタイプのパラメータを受け入れ、さまざまなタイプの結果を返すジェネリック関数を定義できます。境界は、extends (サブクラス) と super (スーパークラス) を使用して指定されるパラメーター タイプのスコープを定義します。制約は、Number サブクラスや同等の型を要求するなど、動作をさらに制限します。関数 max の例では、型の境界と制約を使用して、パラメーターが比較可能であり、Integer や Double などの異なる型を受け入れられるようにしています。

Java 函数泛型的边界和约束条件详解

Java関数ジェネリックの境界と制約の詳細な説明

関数ジェネリック

Javaでは、関数ジェネリックを使用すると、さまざまなタイプのパラメータを受け入れ、さまざまなタイプの結果を返すことができるジェネリック関数を定義できます。型パラメーターを使用することにより、ジェネリック関数はコードの再利用性、型の安全性を強化し、コードの重複を減らすことができます。

境界と制約

Bounds: ジェネリック関数を宣言する場合、型パラメーターの境界を指定できます。境界は、関数が受け入れることを許可されるパラメーターの種類の範囲を定義します。最も一般的に使用される境界タイプは次のとおりです。

  • Extends (拡張): は、型パラメーターが指定された型のサブクラスまたは実装である必要があることを示します。
  • Super (スーパークラス): 型パラメータが指定された型のスーパークラスである必要があることを示します。
  • 6b3d0130bba23ae47fe2b8e8cddf0195 ワイルドカード: 任意の型を表すために使用されます。

制約: 境界に加えて、制約を使用して関数ジェネリックの動作をさらに制限することもできます。制約を使用すると、型パラメータが特定の要件を確実に満たすようにすることができます。最も一般的に使用される制約は次のとおりです。

  • Number: 型パラメーターが Number クラスのサブクラスであることを確認してください。
  • Comparable: 型パラメータが同じ型の他のオブジェクトと比較できることを保証します。

実際的なケース

以下は、型境界と制約を使用するジェネリック関数の例です:

public static <T extends Number & Comparable<T>> T max(T a, T b) {
    if (a.compareTo(b) > 0) {
        return a;
    } else {
        return b;
    }
}

この関数では、型パラメータ T を定義します。これは Number クラスの Comparable インターフェイスを実装します。これらの境界と制約により、数値的に比較できる型のオブジェクトのみを関数に渡すことができるようになります。 T,它必须是 Number 类的子类,并实现 Comparable 接口。此边界和约束条件确保了我们仅能将可以进行数值比较的类型对象传递给该函数。

我们可以这样使用此函数:

Integer maxValue = max(5, 10);
Double maxValue = max(3.14, 2.71);

请注意,在这个例子中,我们使用了不同的类型(IntegerDouble

この関数は次のように使用できます: 🎜rrreee🎜この例では、異なる型 (IntegerDouble) を使用しましたが、どちらも境界と境界を満たしていることに注意してください。関数が適切に動作するように関数に制約を課します。 🎜

以上がJava関数ジェネリックの境界と制約の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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