<e>语法在Java中意味着什么?</e>

时间:2013-11-28 00:53:52

标签: java syntax

我已经快速搜索了答案,但无法找到/想到准确的搜索参数。

我正在自学Java,但似乎无法找到某种语法的含义。

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

<E>表示什么?我依稀记得箭头括号与矢量有关,但基于上面的代码,我感觉它与枚举有关。

非常感谢任何协助或澄清。谢谢。

4 个答案:

答案 0 :(得分:38)

这些被称为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
    

答案 1 :(得分:8)

此处<E>表示 Node 类的类型参数.type参数定义它可以引用任何类型(如String,Integer,Employee等)。 Java泛型具有类型参数命名约定,如下所示:

  1. T - Type
  2. E - Element
  3. K - Key

  4. N - 数字

  5. V - 值

  6. 例如,参加以下场景

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

    对于上述场景,在背景中节点类&#39; E&#39;将引用 String 类型,类将如下所示

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

    不仅字符串,您还可以使用Integer,Character,Employee等作为类型参数。

    您也可以在接口,方法和构造函数中使用泛型。

    有关泛型的更多信息,请访问:

    https://www.journaldev.com/1663/java-generics-example-method-class-interface https://www.javatpoint.com/generics-in-java

答案 2 :(得分:1)

答案 3 :(得分:0)

是表示泛型类型的java语法方式。从本质上讲,这只意味着它可以是一个可以采用任何类型的Node对象。

你应该检查this以获得关于java泛型

的良好评论