gpt4 book ai didi

Java泛型、通配符、集合: compilation error

转载 作者:行者123 更新时间:2023-12-01 10:17:47 24 4
gpt4 key购买 nike

给定以下类(class):

import java.util.ArrayList;
import java.util.Collection;

public class Main {

private static class A {
}

private static class B<T> {
private void thenReturn(T value) {
}
}

private static <T> B<T> when(T methodCall) {
return new B<T>();
}

private static Collection<? extends A> method() {
return new ArrayList<>();
}

public static void main(String[] args) {
Collection<? extends A> result = new ArrayList<>();
// Does not compile.
when(method()).thenReturn(result);
}

}

我收到编译错误 The method thenReturn(Collection<capture#1-of ? extends Main.A>) in the type Main.B<Collection<capture#1-of ? extends Main.A>> is not applicable for the arguments (Collection<capture#3-of ? extends Main.A>)

我需要在 main 方法中更改哪些内容才能编译?有没有更好的解决方案

    public static void main(String[] args) {
Collection result = new ArrayList<>();
when(method()).thenReturn(result);
}

最佳答案

这可以解决这个问题 - 看起来捕获规则对于长表达式来说有点紧张。

    Collection<? extends A> result = new ArrayList<>();
B<Collection<? extends A>> when = when(method());
when.thenReturn(result);

关于Java泛型、通配符、集合: compilation error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796820/

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