gpt4 book ai didi

java - 为什么我的方法调用转换不能将 2d ArrayList 转换为 2d List?

转载 作者:行者123 更新时间:2023-12-01 18:30:17 26 4
gpt4 key购买 nike

我有一个接受二维列表( List<List<String>> )作为参数的方法。当我尝试向它传递一个 2d ArrayList ArrayList<ArrayList<String>> 时编译器说两者不能转换?

public class Test
{
public static void main(String[] args)
{
test(new ArrayList<ArrayList<String>>());
}
public static void test(List<List<String>> list)
{
return;
}
}

我认为该测试会接受 ArrayList,因为 ArrayList is-a列表。

最佳答案

ArrayList<String>List<String> ,但这并不意味着 List<ArrayList<String>>List<List<String>> 。在 Java 中,泛型是不变的,因此这是不允许的。

您可以传递ArrayList<List<String>>给您test方法。精确匹配泛型类型参数始终有效。

test(new ArrayList<List<String>>());

或者,让它发挥作用的另一种方法是使用 list test 中的参数方法有一个通配符:

public static void test(List<? extends List<String>> list)

或者您可以让方法与参数完全匹配。

public static void test(List<ArrayList<String>> list)

这两个都允许您传递 ArrayList<ArrayList<String>> .

关于java - 为什么我的方法调用转换不能将 2d ArrayList 转换为 2d List?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24519889/

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