作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以前没有使用过泛型,我想知道什么时候应该使用它们以及有什么优点。我认为这可能适用于我创建的集合,因为 java 也始终对集合使用泛型,但是如果我调用我创建的方法,则该类型已经在函数中设置,因此无论如何都会出错。我什么时候应该使用泛型类?你能举个例子吗,因为我不确定如何使用它。目前我的代码如下:
public class NodeList {
private static final int MAX_AMOUNT_OF_NODES = 12;
private HashMap<String, Node> nodeList;
public NodeList(){
nodeList = new HashMap<String, Node>(MAX_AMOUNT_OF_NODES);
}
public Node get(String id){
return nodeList.get(id);
}
public boolean add(Node node){
if(nodeList.size() <= MAX_AMOUNT_OF_NODES){
nodeList.put(node.id, node);
return true;
}
return false;
}
}
最佳答案
您可以查看现有的 API 以获取指导。例如,所有集合都是通用的。这是因为所有集合都包含一个类型的元素。
据此,当您必须为不同的类型一次又一次地创建完全相同的代码时,应该使用泛型类是有道理的。如果您必须这样做,泛型可能会为您提供一些好处。
举个例子,docs are a good place to start .
从该链接,第一个代码示例是
public class Box<T> {
// T stands for "Type"
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
}
从概念上讲,有一个 Box 类将包含一些东西。它包含什么并不重要,因为类型是由程序员指定的。一个 Box 实例基本上可以包含任何东西。当程序员需要创建一个框时,他/她指定类型。
Box<SomeClass> myBox = new Box<SomeClass>();
这样想——如果您想创建一个通用的 Box 来容纳任何没有泛型的东西,您必须
1) 有字段 f
成为Object
, 或者
2) 为盒子可以包含的每种类型创建一个 Box 类。
有了泛型,你只需要一个类,你就可以指定确切的类型。也许如果您正在做某事并且您的方法涉及上述 1 或 2,那么最好使用泛型。
关于java - 何时创建泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911282/
我是一名优秀的程序员,十分优秀!