ある地域の生物のリストを作成する必要がある例を考えてみましょう。人間であろうと動物であろうと植物であろうと関係ありません。重要なのは生き物です。この場合、それらをすべて「生き物」としてグループ化し、分類しません。同様に、データを保存する必要がある場合、重要なのはデータ型ではなくコンテンツであり、そこでGenericsを使用します。ジェネリック は、ジェネリック型とメソッドの使用を可能にする言語機能です。
Javaのジェネリックスとは何ですか?
ジェネリック は、ジェネリック型とメソッドの定義と使用に関連する一連の言語機能を表す用語です。 Java Genericメソッドは、通常のデータ型およびメソッドとは異なります。 Genericsの前は、 あらゆるタイプのオブジェクトを保存します。 非ジェネリック 。さて、ジェネリックスは 特定のタイプのオブジェクトを格納するプログラマー。
Javaのジェネリックスとは何かがわかったところで、さらに進んで、なぜJavaジェネリックスが必要なのかを理解しましょう。
なぜJavaジェネリック?
あなたが見れば クラスの場合、ほとんどのクラスがObject型のパラメータ/引数を取ることがわかります。基本的に、この形式では、任意のJavaタイプを引数として取り、同じオブジェクトまたは引数を返すことができます。彼らは本質的に 異種 つまり、同様のタイプではありません。
Javaアプリケーションでは、入力のデータ型が固定されていない場合があります。入力は次のようになります 整数 、へ 浮く または 。入力をに割り当てるために 適切なデータ型の場合、事前のチェックを実行する必要がありました。従来のアプローチでは、入力を受け取った後、入力のデータ型がチェックされ、適切なデータ型の変数に割り当てられていました。このロジックを使用すると、コードの長さと実行時間が長くなりました。これを回避するには、 ジェネリック医薬品が導入されました 。 Genericsを使用する場合、コード内のパラメーターはコンパイル時に自動的にチェックされ、デフォルトでデータ型が設定されます。したがって、ここでJavaのジェネリックスの概念が必要になります。
Genericsについていくつかの洞察を得たので、先に進んで、さまざまな方法を見てみましょう。ジェネリックスはソースコードに適用できます。
Javaジェネリックの種類
Javaでジェネリックスを適用する方法は4つあり、次のとおりです。
- ジェネリック型クラス
- ジェネリックインターフェイス
- 一般的な方法
- ジェネリックコンストラクタ
次に、ジェネリックスを型クラスに適用する方法を詳しく理解しましょう。
1.ジェネリック型クラス
クラスが1つ以上の型変数を宣言している場合、そのクラスはGenericであると言われます。これらの変数タイプは、のタイプパラメータとして知られています。 。例を使ってこれを理解しましょう。以下の例では、1つのプロパティを持つクラスを作成します バツ プロパティのタイプはオブジェクトです。
Javaでイテレータを使用する方法
class Genericclass {private Object x public void set(Object x){this.x = x} public Object get(){return x}}
ここで、特定のタイプでクラスを初期化すると、そのクラスはその特定のタイプでのみ使用する必要があります。例えば。クラスの1つのインスタンスに値を保持させたい場合 バツ タイプ ‘ ストリング ‘、プログラマーは設定して唯一のものを取得する必要があります タイプ。プロパティタイプをObjectに宣言したので、この制限を強制する方法はありません。プログラマーは任意のオブジェクトを設定でき、からの任意の戻り値タイプを期待できます。 getメソッド すべてのJavaタイプはのサブタイプであるため クラス。
このタイプの制限を適用するには、以下のようにジェネリックを使用できます。
class Genericclass {// Tは 'Type'を表しますprivateT x public void set(T x){this.x = x} public T get(){return x}}
これで、クラスが間違った型で誤用されないことが保証されます。の簡単な例「」 Genericclass 」は次のようになります。
Genericclass instance = new Genericclass()instance.set( 'Edureka')instance.set(10)//これによりコンパイル時エラーが発生します
それがその仕組みです。この類推はインターフェースにも当てはまります。ジェネリック型の情報をJavaのインターフェースで使用する方法を理解するための例を簡単に見てみましょう。
2.汎用インターフェース
アン 抽象データ型を指します。彼らは許可します それらの表現の詳細とは独立して操作されます。また、それらはで階層を形成します 言語。ジェネリック型をJavaのインターフェースに適用する方法を理解しましょう。
//ジェネリックインターフェイス定義インターフェイスGenericInterface {T2 PerformExecution(T1 x)T1 ReverseExecution(T2 x)} //ジェネリックインターフェイスクラスを実装するクラスGenericclassはGenericInterfaceを実装します{publicInteger PerformExecution(String x){//実行コード} public String ReverseExecution(整数x){//実行コード}}
Genericsを型クラスとインターフェイスに適用する方法を理解できたと思います。それでは、この記事をさらに深く掘り下げて、メソッドとコンストラクターにどのように役立つかを理解しましょう。
3.一般的な方法
ジェネリックメソッドはジェネリッククラスによく似ています。それらは、1つの側面だけが互いに異なります。 スコープまたはタイプ情報はメソッド内にのみあります。 ジェネリックメソッドは、独自の型パラメーターを導入します。
例を挙げてこれを理解しましょう。以下は、変数のリスト内の型パラメーターのすべてのオカレンスを検索するために使用できるジェネリックメソッドの例です。
public static int countAllOccurrences(T [] list、T element){int count = 0 if(element == null){for(T listElement:list)if(listElement == null)count ++} else {for(T listElement:list )if(element.equals(listElement))count ++} return count}
あなたがのリストを渡す場合 このメソッドで検索する文字列は、正常に機能します。ただし、文字列のリストで数値を見つけようとすると、コンパイル時エラーが発生します。
このアナロジーはコンストラクターにも似ています。ジェネリックコンストラクターの例を見て、それがどのように機能するかを理解しましょう。
4.ジェネリックコンストラクタ
ビルダーへ 新しく作成されたオブジェクトを初期化するコードのブロックです。 A ビルダー Jのインスタンスメソッドに似ています エイバ ただし、戻り値の型がないため、メソッドではありません。 コンストラクター クラスと同じ名前で、Jでは次のようになります。 エイバ コード。それでは、例を見て、それがどのように機能するかを理解しましょう。
class Dimension {private T length private T width private T height //汎用コンストラクタpublicDimension(T length、T width、T height){super()this.length = length this.width = width this.height = height}}
上記の例では、Dimensionクラスのコンストラクターに型情報があります。したがって、単一タイプのすべての属性のみを持つディメンションのインスタンスを持つことができます。したがって、これがジェネリック型コンストラクターを使用する方法です。 Javaのジェネリックスの種類を理解していただければ幸いです。
それでは、さらに進んで、Javaでのジェネリックスの利点を見てみましょう。
Javaにおけるジェネリックスの利点
1.コードの再利用性
あなたは戦略またはクラスまたはを構成することができます 一度、必要なタイプまたは方法で使用します。
2.個々のタイプの鋳造は必要ありません
基本的に、あなたはから情報を回復しました 毎回、タイプキャストする必要があります。各回復タスクでの型キャストは大きな片頭痛です。そのアプローチを根絶するために、ジェネリックが導入されました。
3.非遺伝的アルゴリズムの実装
型安全性のあるさまざまな種類のアイテムで機能するアルゴリズムを計算することもできます。
以上がJavaGenericsの利点です。これで、Javaのジェネリックスに関するこの記事は終わりです。それが有益であり、JavaGenericsの理解に役立つことを願っています。
チェックしてください 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。私たちはあなたの旅のあらゆるステップを支援するためにここにいます。このJavaインタビューの質問に加えて、Java開発者になりたい学生や専門家向けに設計されたカリキュラムを考え出します。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。
質問がありますか?この「Javaのジェネリック」のコメントセクションで言及してください。 ' 論文 できるだけ早くご連絡いたします。