Javaジェネリックスの詳しい解説(知識ポイントのまとめ)

青灯夜游
リリース: 2019-11-26 17:10:06
転載
3189 人が閲覧しました

Javaジェネリックスの詳しい解説(知識ポイントのまとめ)

コンセプト

出典: Java は、設計が開始されるまで、つまり JDK 1.5 で導入されるまでは普遍的ではありませんでした。 Java ジェネリックは消去によって実装されます。消去とは何か知っていますか?下を見てください。

概念: 通常のクラスとメソッドは、特定の型 (基本型またはカスタム クラス) のみを使用できます。多くの種類のコードに適用できるコードを作成する場合、この厳格な制限によりコードに多くの制約が課せられます。ジェネリックはパラメーター化された型の概念を実装し、コードを複数の型に適用できるようにします。ジェネリックがプログラミング言語に登場したとき、その本来の目的は、クラスとメソッドに広範な表現力を持たせることでした。

[推奨学習: Java ビデオ チュートリアル ]

単純なジェネリックス

ジェネリックスが登場する理由はたくさんありますが、最も重要な理由の 1 つは Create です。コンテナクラス。まだタイプを指定していませんが、後で使用するタイプを決定します。これを実現するには、クラス名の後に山括弧で囲んで型パラメータを使用する必要があります。その後、このクラスが使用されると、この型のパラメータは実際の型に置き換えられます。以下の例では、 t は型パラメータです。コードは次のとおりです。

# ただし、多くのソース コードでは、Java などの一部のジェネリック クラスには複数のジェネリック パラメータがあります。 UTIL機能。 t、u、r の 3 種類のパラメータを持つ double 関数。

ジェネリック メソッド

ジェネリック メソッドは、メソッドをクラスから独立させます。ジェネリック コードを記述するときの基本ガイドラインは、可能な限りジェネリック メソッドを使用することです。これは、クラス全体に対してジェネリック メソッドの代わりにジェネリック メソッドを使用できる場合は、ジェネリック メソッドを使用すると状況が明確になるため、ジェネリック メソッドを使用できることを意味します。さらに、静的メソッドの場合、ジェネリック クラスの型パラメーターにアクセスできないため、静的メソッドで一般化機能を使用する必要がある場合は、静的メソッドをジェネリック メソッドにする必要があります。

一般的な消去

『Java プログラミング思想』の一般章にある「削除の謎」セクションを読んだとき、特にめまいがして、下を見るとますます混乱してきました。特に境界とワイルドカードを見ると、少し混乱します。まず消去とは何かを見てみましょう。ジェネリック コードでは、ジェネリック パラメーターの型に関する情報は利用できません。 Java ジェネリックは消去によって実装されます。つまり、ジェネリックを使用すると、特定の型は消去され、それについてわかるのはオブジェクトの使用だけです。ジェネリックスは元々 Java に導入されていなかったため、古いバージョンの JDK と互換性があるように設計されました。 ErAcess は、Java の汎用実装間の妥協案です。したがって、実行すると list は list と同じになります。実行中ですが、コンパイル時には list はこの文字列型のリスト コンテナーを表し、list は現在の整数型のリスト コンテナーを表すことに注意してください。たとえば、Java プログラミングのアイデアの例です。

ジェネリックスの境界

Java のジェネリックスでは、コンパイル時に T が型を表します。境界が指定されていない場合、オブジェクトと同じになります。 extends キーワードを使用してジェネリックの境界を指定できます。 f() を呼び出せるようにするには、ジェネリック クラス境界を指定してジェネリック クラスを支援し、境界の背後にある型を受け入れる必要があることをコンパイラーに指示します。ここでは拡張キーワードが使用されます。上記のコードを次のように変更します。

概要

Java ジェネリック機能は、多くのオープン ソース フレームワークで広く使用されています。これには深い理解が必要ですが、長年コードを入力していると、将来的には異なる理解が得られると思います。今では本を読むことでしか知ることができません。

この記事は Java 入門 列からのものです。ぜひ学習してください。

以上がJavaジェネリックスの詳しい解説(知識ポイントのまとめ)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート