gpt4 book ai didi

java - 真的需要通配符泛型吗?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:35 24 4
gpt4 key购买 nike

例如:

    public String add(Set<?> t){
...;
}



public <T> String add(Set<T> t){
...;
}

第一个使用通配符泛型;第二种是泛型方法的正常形式。有什么不同?

在什么情况下我们需要通配符泛型,而不是普通形式的泛型?

最佳答案

这里是需要通配符的情况。此方法需要一个 List<List<?>> ,这是一个列表列表。该方法可以将不同组件类型的列表添加到其中:

public void foo(List<List<?>> t) {
t.add(new ArrayList<String>());
t.add(new ArrayList<Integer>());
}

您不能使用没有通配符的通用类型参数来执行此操作。例如,以下内容不起作用:

public <T> void foo(List<List<T>> t) {
t.add(new ArrayList<String>()); // does not compile
t.add(new ArrayList<Integer>()); // does not compile
}

关于java - 真的需要通配符泛型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887214/

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