我已经快速搜索了答案,但无法找到/想到准确的搜索参数。
我正在自学Java,但似乎无法找到某种语法的含义。
public class Node<E>{
E elem;
Node<E> next, previous;
}
<E>
表示什么?我依稀记得箭头括号与矢量有关,但基于上面的代码,我感觉它与枚举有关。
非常感谢任何协助或澄清。谢谢。
答案 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泛型具有类型参数命名约定,如下所示:
K - Key
N - 数字
V - 值
例如,参加以下场景
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泛型
的良好评论