Java では型パラメータの境界として「extends T」が許可されるのに、「implements T」は許可されないのはなぜですか?

Barbara Streisand
リリース: 2024-11-02 06:25:29
オリジナル
906 人が閲覧しました

Why is

ジェネリック型パラメータ境界での拡張と実装

質問:

Java では、なぜ「extends T」なのか型パラメータの境界の定義は許可されていますが、「T の実装」は許可されていません?

たとえば、次のコードは禁止されています:

<code class="java">public interface C {}
public class A<B implements C> {}</code>
ログイン後にコピー

このコードは有効です:

<code class="java">public class A<B extends C> {}</code>
ログイン後にコピー

答え:

意味的には、一般的な制約言語内では「拡張」と「実装」の間に区別はありません。制約の可能性は、継承または代入の互換性の方向を反映して、「extends」と「super」に制限されます。

  • extends T: type パラメーターに関連付けられたクラスは次のとおりです。型 T に割り当てられるか、型 T から拡張されます。
  • super T: 型パラメーターに関連付けられたクラスは、型 T から割り当てることができます。

無効なコード例の場合、「implements」を使用して型パラメーター B の制約を定義しようとします。ただし、「implements」は有効な制約の型ではないため、許可されません。

以上がJava では型パラメータの境界として「extends T」が許可されるのに、「implements T」は許可されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!