「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java ジェネリックを使用してクラスとインターフェイスの制約を組み合わせるにはどうすればよいですか?

Java ジェネリックを使用してクラスとインターフェイスの制約を組み合わせるにはどうすればよいですか?

2024 年 12 月 22 日に公開
ブラウズ:947

How Can I Combine Class and Interface Constraints Using Java Generics?

クラスとインターフェイスの互換性のある Java ジェネリック

Java では、特定の制約を持つクラス オブジェクトを作成するのが難しい場合があります。一般的なシナリオは、特定のクラスを拡張すると同時に特定のインターフェイスを実装するクラス オブジェクトを定義することです。ただし、ジェネリックスを使用して両方の制約を同時に達成することは、共通の争点となっています。

次の構文を使用して、クラスに ClassA を拡張し、インターフェイス InterfaceB を実装するよう強制しようとします。

Class extends ClassA>

or

Class extends InterfaceB>

は 1 つの要件のみを満たし、両方を組み合わせることができません。

Solution

幸いなことに、Java ジェネリックスでは複数のインターフェイスまたはクラス プラスが可能です。インターフェース。これを実現するには、ワイルドカード宣言を次のように変更します。

Sun の Generics Tutorial で説明されているように、追加の必要なインターフェイスごとに & InterfaceName を追加することで、任意に複雑な組み合わせを実現できます。たとえば、Collections#max の JavaDoc 宣言は、この複雑さを示しています。

public static > T max(Collection extends T> coll)

バイナリ互換性を維持するには、これらの複雑な宣言が必要です。

クラスとインターフェイスの制約を使用した実装

変数宣言に必要な制限を実装するには、変数宣言に一般的な境界を配置します。クラス:

class classB { }
interface interfaceC { }

public class MyClass {
    Class variable;
}

結論

Java ジェネリックスは、制約のあるクラスとインターフェイスの組み合わせを作成する柔軟な方法を提供します。構文と制限を理解することで、開発者はこの機能を活用してコードに特定の要件を強制できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3