我已经快速谷歌搜索了答案,但是找不到/想到准确的搜索参数。
我正在自学Java,但是似乎找不到某种语法的含义。
public class Node<E>{
E elem;
Node<E> next, previous;
}
<E>
是什么意思?我模糊地记得箭头括号与向量有关,但根据上面的代码,我感觉它与枚举有关。
任何帮助或澄清都将不胜感激。谢谢。
这些被称为泛型。
一般来说,在定义类、接口和方法时,它们使得类型(类和接口)可以作为参数。
与非泛型代码相比,使用泛型能够带来许多好处,正如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
这里<E>
代表Node类的类型参数。类型参数定义了它可以引用任何类型(如String,Integer,Employee等)。Java泛型有以下类型参数命名约定:
K - 键
N - 数字
V - 值
例如,考虑以下场景
public class Node<E>{
E elem;
Node<E> next, previous;
}
class Test{
Node<String> obj = new Node<>();
}
对于上述情况,在后台,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-interface https://www.javatpoint.com/generics-in-java
泛型是Java语法中指示通用类型的方式。基本上,这意味着它可以是一个Node对象,可以采用任何类型。
您应该查看this,了解有关Java泛型的良好教程。
编辑
(在标签下方,在分享
和标记
之间)。 - ataulm