java - 通用节点是否需要成为通用列表的一部分?

标签 java generics

我的任务是创建一个名为 Node 的类,该类具有实例变量:E 数据(通用)和 nextNode(单链表实现)。为此,我创建了一个类

public class Node<E> 

并实现了所有相关方法。

然后我必须创建一个包含实例变量 Node head 和 int size 的 List。本质上,列表包含节点的集合。但是,我不确定应该如何将类定义为通用列表或常规列表。

public class List<E>

对比

public class List

哪种实现方式更有意义,为什么?感谢任何可以帮助我理解泛型概念的人。

最佳答案

何时使用 List<E>

如果您的列表只支持添加一种类型的元素,请使用 List<E> .

例如,您希望能够创建 Integer 的列表s 或 Double 的列表s,但不是混合两者的列表。

然后您可以支持使用通用类型的添加和删除接口(interface) E为了强制执行只能添加该类型的项目而不能添加其他项目的事实。

何时使用 List

如果您的列表应该支持添加多种不同类型的项目,请使用 List .

例如,如果您希望能够添加 Node<Integer> , 一个 Node<Scanner> , 和一个 Node<Double> .

这样你就可以让程序员添加Node他们想要的任何类型的 s,因为列表没有类型参数。

警告

如果您正在编写自己的 List,则以上内容成立类(这个问题听起来像你)。如果您使用内置 java.util.List类,那么你不应该在没有类型参数的情况下使用它。

关于java - 通用节点是否需要成为通用列表的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42405886/

相关文章:

java - 如何在 Spring Boot JPA 中连接到多个数据库?

java - 如何通过配置禁用 AspectJ 编译

java - Dijkstra 算法使用邻接矩阵问题

java - 读取文本文件方法

c# - 如何检测一个对象是一个泛型集合,以及它包含哪些类型?

c# - 没有反射的编译时通用类型映射

java - 如何使用多个数据源获得 3 个线程池?

c++ - 我无法让这个虚拟模板仿函数运算符返回正确的类型

c# - 从 Generics<T> 转换为特定子类

iOS Swift4 如何协调 T.Type 和类型(:) to pass dynamic class type as function parameter?