gpt4 book ai didi

java - 为什么我收到 ClassCastException?

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

所以我有看起来像这样的构造函数:

public Group(Entry<String, List<String>> rawGroup) {
permission=rawGroup.getKey();

List<String> params = rawGroup.getValue();

limits = Integer.parseInt(params.get(0));
int a = Integer.parseInt(params.get(1));
int b = Integer.parseInt(params.get(2));
s1 = Math.min(a, b);
s2 = Math.max(a, b);
}

和“List params = rawGroup.getValue();”使得:

java.lang.ClassException:java.lang.String无法转换为java.util.List

我不明白为什么会发生这种情况,getValue() 无法返回 String,因为它不是 String

更新:Entry 是返回 Map 的 EntrySet 的一部分

更新2:所以这里是使用该构造函数的代码 -

    Map<String, List<String>> rawGroups = (Map) holder.config.getConfigurationSection(HEADING).getValues(true);
for (Entry<String, List<String>> rawGroup : rawGroups.entrySet()) {
groups.add(new Group(rawGroup));
}

最佳答案

关键行在这里:

Map<String, List<String>> rawGroups = (Map) holder.config.getConfigurationSection(HEADING).getValues(true);

您假设什么 holder.config.getConfigurationSection(HEADING).getValues(true)返回的是 Map<String, List<String>> ,并告诉编译器也做出这样的假设。显然情况并非如此,因为当您尝试以这种方式使用它时,它会失败。

您需要找出什么holder.config.getConfigurationSection(HEADING).getValues(true) 真的返回,并使用它。

以下是相同基本概念的简单演示 ( live copy ):

public static void main (String[] args)
{
Map<String, List<String>> m = (Map)getMap();
try {
System.out.println(m.get("entry").get(0)); // Fails here
}
catch (Exception e) {
System.out.println("Failed: " + e.getMessage());
e.printStackTrace(System.out);
}
}
static Object getMap() {
Map m = new HashMap();
List l = new LinkedList();
l.add(42);
m.put("entry", l);
return m;
}

关于java - 为什么我收到 ClassCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288560/

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