gpt4 book ai didi

java - 无法使用通配符调用泛型方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:18:54 25 4
gpt4 key购买 nike

我有一个这样定义的类:

public class Test {
static <T> List<Class<T>> filter(List<Class<T>> input) {
// code here
}

public static void main(String[] args) {
List<Class<? extends Throwable>> list =
new ArrayList<Class<? extends Throwable>>();
filter(list);
}
}

filter main 中的方法调用给出以下编译错误:

The method filter(List<Class<T>>) in the type Test is not applicable for the
arguments (List<Class<? extends Throwable>>)

我不明白为什么<T>不绑定(bind)到 <? extends Throwable> .有没有泛型专家可以帮助我?

最佳答案

我认为这里的问题是 ? 没有类型这样就可以了。

考虑一下,为了简单起见,我们是否替换了 ClassAtomicReference .

static <T> void filter(List<AtomicReference<T>> input) {
T value = input.get(0).get();
input.get(1).set(value);
}

如果inputAtomicReference<Integer> 组成和一个 AtomicReference<String>我们会有麻烦的。

在存在多态性的情况下指针指向指针的潜在问题是困难的。没有泛型,我们只能挥手。对于泛型,我们需要有实际意义。

关于java - 无法使用通配符调用泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024820/

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