gpt4 book ai didi

java - 编译带有边界的泛型时出错

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

<分区>

我有一个关于泛型的问题。

我在一个类中有这个片段(我们称之为案例 1):

static {
final List<Class<? extends A>> typeList = Arrays.asList(
C.class,
D.class
);
}

public interface A {…}

public class C extends B {…}

public class D extends B {…}

public abstract class B implements A {…}

Android Studio 报错,它没有在上面的 final List... 行编译:

Incompatible types
Required List< Class<? extends A> >
Found List< Class<? extends B> >

但是,之前我有这段代码(我们称之为案例 2):

static {
final List<Class<? extends A>> typeList = Arrays.asList(
C.class,
D.class
);
}

public interface A {…}

public class C implements A {…}

public class D implements A {…}

并编译。

所以,我尝试了,只是为了缩小问题范围,将案例 1 更改为:

static {
final List<Class<? extends A>> typeList = Arrays.asList(
B.class
);
}

请注意 B 实现了 A,就像情况二中的 C 和 D 一样。但是编译器仍然会报错。

我无法理解这个问题,我阅读了 Java Language Specification类型和值章节,仍然没有任何内容。

我在 StackOverflow 上搜索过,但没有找到类似的问题。

有什么指点吗? (PS:必填 XKCD 才有人做)

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