gpt4 book ai didi

java - 泛型和匿名类(错误或功能?)

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

由于“A”表达式,此代码无法编译。有趣的是:在 A expression expected

List<Foo>
通用类型,但得到
List<anonymous Foo> 
(根据编译器)。是 jdk 错误还是功能?

 
interface Foo{ void doFoo(); }

public class GenericsTest {

public static<V> List<V> bar(V v){ return new ArrayList<V>();}

public static void main(String[] args) {
List<Foo> f = bar(new Foo(){ //A
public void doFoo() { }
}); //don't compiles

Foo fooImpl = new Foo(){
public void doFoo() { }
};

List<Foo> f2 = bar(fooImpl); //compiles
}
}

最佳答案

第三种选择是在方法调用中明确指定通用参数,因为我喜欢这种语法并且我认为它未被充分利用(并且可能不是那么为人所知),如下所示:

    List<? extends Foo> f = <Foo>bar(new Foo(){
public void doFoo() { }
});

当你有一个调用方法的显式对象时,它看起来更好(恕我直言),例如this.<Foo>bar(...) .

关于java - 泛型和匿名类(错误或功能?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642874/

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