web-dev-qa-db-ja.com

Javaでの<E>構文の意味は何ですか?

私はすぐに答えを探しましたが、正確な検索パラメーターを見つけることができませんでした。

私は自分でJavaを教えていますが、特定の構文の意味を見つけることができないようです。

public class Node<E>{
    E elem;
    Node<E> next, previous;
}

<E>意味しますか?私は、矢印ブレースがベクトルに関係していることを漠然と覚えていますが、上記のコードに基づいて、列挙に関係していると感じています。

どんな支援や説明も大歓迎です。ありがとうございました。

37
d.lanza38

これらは Generics と呼ばれます。

一般に、これらは、クラス、インターフェース、およびメソッドを定義するときにtypes(クラスおよびインターフェース)がパラメーターになることを可能にします。

Javaのチュートリアルから次のように、ジェネリックを使用すると、非ジェネリックコードを使用するよりも多くの利点があります。

  • コンパイル時のより強力な型チェック。Javaコンパイラは、汎用コードに強力な型チェックを適用し、コードが型安全性に違反する場合はエラーを発行します。コンパイル時エラーの修正は、見つけにくいランタイムエラーの修正よりも簡単です。

    例えば:

    // without Generics
    List list = new ArrayList();
    list.add("hello");
    
    // With Generics
    List<Integer> list = new ArrayList<Integer>();
    list.add("hello"); // will not compile
    
  • ジェネリックアルゴリズムを実装するためのプログラマーの有効化.

  • キャストの排除

    たとえば、ジェネリックのない次のコードスニペットではキャストが必要です。

    List list = new ArrayList();
    list.add("hello");
    String s = (String) list.get(0);
    

    ジェネリックを使用するように書き直された場合、コードはキャストを必要としません。

    List<String> list = new ArrayList<String>();
    list.add("hello");
    String s = list.get(0); // no cast
    
42
blacktide

ここに <E>は、Nodeクラスの型パラメーターを示します。型パラメーターは、任意の型(String、Integer、Employeeなど)を参照できることを定義します。 Javaジェネリックには、次のような型パラメーターの命名規則があります。

  1. T-タイプ
  2. E-要素
  3. K-キー

  4. N-番号

  5. V-値

たとえば、次のシーンを取ります

public class Node<E>{
   E elem;
   Node<E> next, previous;
}
class Test{
   Node<String> obj = new Node<>();
}

上記のscenerioでは、バックグラウンドで、Nodeクラス「E」はStringタイプを参照し、クラスは次のようになります

public class Node<String>{
   String elem;
   Node<String> next,previous;
}

Stringだけでなく、Integer、Character、Employeeなどを型パラメーターとして使用することもできます。

インターフェイス、メソッド、コンストラクターでもジェネリックを使用できます。

ジェネリックの詳細については、次をご覧ください。

https://www.journaldev.com/1663/Java-generics-example-method-class-interfacehttps://www.javatpoint.com/generics-in-Java

10
SHB

ノードは「ジェネリック」クラスを意味します。

参照: http://docs.Oracle.com/javase/tutorial/Java/generics/types.html

1
code2use

これは、Javaジェネリック型を示す構文方法です。本質的には、これはNodeすべての型を取ることができるオブジェクトである可能性があることを意味します。

あなたは this をチェックして、Java generics

0
WillBD