gpt4 book ai didi

java - 如何访问传递的通用数组列表中的元素

转载 作者:行者123 更新时间:2023-12-01 18:03:11 25 4
gpt4 key购买 nike

当你传递 arraylist 时,我在弄清楚 java 中的泛型方法如何工作时遇到了问题。

所以基本上我有几个 DTO,例如:TypeAwesome、TypeGreat、TypeNotSoGreat

这些 DTO 从文本文件中读取(每个 DTO 都从自己的文件中读取),并且我有想要使用的 getter。

DTO 代表 csv 文件中的每一行,我将这些 DTO 对象保存到 ArrayList 中,如下所示:

ArrayList<TypeAwesome> list = new ArrayList<>();
for (int i = 1; i < lineCount; i++) {
typeAwesome = new TypeAwesome();
...
list.add(typeAwesome);
}
return fileHelper.checkFinalResult(list);

如您所见,我正在传递该列表。

我的目标是无论我发送的列表类型是什么,我都想获得该列表属性和 getter 。

基本上我收到这样的错误:

  • 无法解析 T 中的“get”方法
  • 无法解析 T 中的方法“size”
  • 无法解析 T 中的“get”方法
  • foreach 不适用于 T 类型

    public <T extends Base> String checkFinalResult(List<T> list) {
    String finalStatus = "FAIL";
    List<String> statuses = new ArrayList<>();

    for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i).getRezultat());
    String status = list.get(i).getRezultat().equalsIgnoreCase("OK") ? "PASS" : "FAIL";
    statuses.add(status);
    // returns last result - to determine if whole test failed or not
    if (i == list.size() - 1) {
    if (list.get(i).getRezultat().equalsIgnoreCase("OK")) {
    finalStatus = "PASS";
    }
    }
    }
    System.out.println("STATUSES: " + statuses);
    int index = 0;
    for (T item : list) {
    // get status
    item.status = statuses.get(index);
    System.out.println("ITEM STATUS " + item.status);
    index++;
    }
    return finalStatus;
    }

如何传递某种类型的 ArrayList 以便 get 方法在该列表上工作,是否有其他方法可以实现我想要实现的目标?

编辑:我已经进行了必要的修复并实现了基类,如评论中所述:基类:

public class Base {
public String rezultat;
public String status;
public String getRezultat() {
return rezultat;
}
}

我现在在上面遇到错误:

return fileHelper.checkFinalResult(list);

所需类型:列表假如:列表原因:不存在类型变量的实例,因此 TypeAwesome 符合 Base

这是什么意思,我是否必须创建该实例才能使 TypeAwesome 符合 Base?

最佳答案

我相信您真正想要的是列表包含泛型类型。所以你的方法签名应该是:

public <T> checkFinalResults(List<T> list) {...}

这将使您传递当前的错误,但您正在尝试对列表的元素调用 getRezultat() 方法。如果每个 DTO 都扩展一个公共(public)基类或实现一个公共(public)接口(interface),那么您可以通过在泛型定义中指定来访问该类型的方法。例如

public <T extends HasRezultat> checkFinalResults(List<T> list) { ... }

关于java - 如何访问传递的通用数组列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60598581/

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