gpt4 book ai didi

java - 如何使这个 Java 方法变得通用

转载 作者:行者123 更新时间:2023-12-02 16:17:06 26 4
gpt4 key购买 nike

我有一个java方法,我试图使其通用,以便它可以将2种不同类型的对象的列表作为参数。 (下面显示的简单示例)。这两个不同的对象始终具有 getDate() 和 getHour() 方法。代码如下所示:

public <T> List<T> getListOfStuff(List<T> statistics) {

List<T> resultList = new ArrayList<T>(statistics.size());

if(statistics.size() > 0){
resultList.add(statistics.get(0));

int date = Integer.parseInt(resultList.get(0).getDate());
int hour = Integer.parseInt(resultList.get(0).getHour());
}
return resultList;
}

但是这不起作用。这两行不起作用:

int date = Integer.parseInt(resultList.get(0).getDate());
int hour = Integer.parseInt(resultList.get(0).getHour());

错误说:“对于类型 T ,方法 getDate() 未定义”并且“类型 T 的 getHour() 方法未定义”

它向我提供了向方法接收器添加强制转换的建议,但它不允许我使用 T,而是像这样强制我使用对象名称,这对我不起作用:

int date = Integer.parseInt((ObjectName1)resultList.get(0).getDate());
int hour = Integer.parseInt((ObjectName1)resultList.get(0).getHour());

有什么办法可以在这里做我想做的事吗?

最佳答案

您需要使用以下内容:

public <T extends ObjectName1> List<T> getListOfStuff(List<T> statistics) {
List<T> resultList = new ArrayList<>(statistics.size());

if (!statistics.isEmpty()) {
resultList.add(statistics.get(0));

int date = Integer.parseInt(resultList.get(0).getDate());
int hour = Integer.parseInt(resultList.get(0).getHour());
}

return resultList;
}

现在可以传递给此方法的唯一 List 必须包含 ObjectName1 或扩展它的对象。

关于java - 如何使这个 Java 方法变得通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43924879/

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