gpt4 book ai didi

java - 何时创建泛型类

转载 作者:行者123 更新时间:2023-11-29 06:04:44 25 4
gpt4 key购买 nike

我以前没有使用过泛型,我想知道什么时候应该使用它们以及有什么优点。我认为这可能适用于我创建的集合,因为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com