Javaのクラス内に存在するEは何を意味していますか?

Written by Recursion
11月 8, 2021
上級者向け:
※以下の内容は、上級コースが修了済みのユーザーが対象となります。

Javaを選択しているとデフォルトのコードに<E>と書かれているものがあります。これはジェネリクスの型パラメータを表しています。

ジェネリクスとは、クラスを定義するときには汎用性を持たせておき、実行時にStringやIntegerなどの型を決定することができる仕組みです。ダイヤモンド演算子<>の中にアルファベット大文字を入れた型パラメータを使うことでジェネリクス(総称型)として利用することができます。

アルファベットは何でもいいのですが、型パラメーターとしてよく使われるのは、T(Type)、E(Element)、K(Key)、V(Value)などがあります。

連結リストを例として見てみよう

連結リストの問題ではSinglyLinkedListNode<E>が定義されています。これは「SinglyLinkedListNodeクラスを定義した時には指定されていないけれど、何かの型が1つ入ります」という意味です。実際にインスタンスを生成してクラスを利用するときには、<Integer>や<String>などを指定します。

例えば、Integer型の要素が入るSinglyLinkedListNodeクラスのインスタンスを作成したいときは、

SinglyLinkedListNode<Integer> node = new SinglyLinkedListNode<Integer>(data);

ように書きます。型推論でコンパイラが型を予測できる時には右辺の<Integer>を省略しダイヤモンド演算子<>のみにできる場合があります。

また、ジェネリクスで定義したクラスをメソッドの戻り値として利用するときにも特定の型を指定して記述します。ジェネリクスについて詳しくはOOPコースで学習します。

関連記事
  • Recursionのエディタで使えるおすすめのショートカット
  • コンソールに出力が多く出てきます。なぜですか?
  • コンソールにundefinedと表示されますが、これはバグでしょうか?
  • 無限ループ内のデバッグ方法がわかりません
  • デバッグの方法がわかりません
  • エディタに何を書けばいいのかわかりません
  • 書いたコードをリセットする方法を教えてください
Leave A Comment コメントをキャンセル

CAPTCHA


email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

カテゴリー
  • コンテンツ 0
    • 一般 7
    • 機能 7
    • 学習方法 4
  • コーディング問題 0
    • 一般 5
    • 問題を解く 5
    • エディタ 8
    • テストケース 5
    • テスト & 提出 4
    • 解説 3
  • コミュニティ 0
    • 一般 2
    • 機能 1
  • アカウント設定 0
    • 一般 5
    • カスタマイズ 3
    • 退会 2
  • 請求書 0
    • 一般 2
    • お支払い 6
  • その他 3
よく読まれている記事
  • 学習ロードマップの使い方
  • 学習期間はどれくらいですか?
  • 初級の2周目をJavaでするべきか、中級に進むべきでしょうか?
  • コミュニティはどうやって入ることができますか?
  • 問題の解答解説はどうやって見ることができますか?
  • プロモコードの使い方を教えてください
  • コース内のエディタはどうやって学習するのがおすすめですか?
  • 中学校の数学の知識しかありませんが、ついていけると思いますか?
  • 解答解説はどのように勉強するべきですか?
  • コードの貼り付け方がわかりません
エディタ
  • Javaのクラス内に存在するEは何を意味していますか?
  • Recursionのエディタで使えるおすすめのショートカット
  • コンソールに出力が多く出てきます。なぜですか?
  • コンソールにundefinedと表示されますが、これはバグでしょうか?
  • 無限ループ内のデバッグ方法がわかりません
  • デバッグの方法がわかりません
View All 7  
  • Recursion
  • 公式ブログ
  • © 2022 Recursion, Inc All Rights Reserved.

よく検索されるワード:コミュニティ, 解答, プロジェクト