小编Sto*_*nev的帖子

为什么Set <?允许扩展Foo <?>>,但不设置Set <Foo <?>>

我想知道泛型如何在这种情况下工作,为什么 Set<? extends Foo<?>> set3 = set1;允许但Set<Foo<?>> set2 = set1;不是?

import java.util.HashSet;
import java.util.Set;

public class TestGenerics {
    public static <T> void test() {
        Set<T> set1 = new HashSet<>();
        Set<?> set2 = set1;             // OK
    }

    public static <T> void test2() {
        Set<Foo<T>> set1 = new HashSet<>();
        Set<Foo<?>> set2 = set1;           // COMPILATION ERROR
        Set<? extends Foo<?>> set3 = set1; // OK
    }
}

class Foo<T> {}
Run Code Online (Sandbox Code Playgroud)

java generics

21
推荐指数
2
解决办法
1087
查看次数

标签 统计

generics ×1

java ×1