gpt4 book ai didi

具有通用属性的 Java 枚举

转载 作者:行者123 更新时间:2023-12-03 21:08:52 24 4
gpt4 key购买 nike

我一直在尝试创建包含通用属性的枚举,例如:

public enum SomeEnum {
SOME_VALUE_1(SomeValue1.class),
SOME_VALUE_2(SomeValue2.class);

private final Class<T extends SomeValue> className;
}
SomeValue1SomeValue2类实现 SomeValue界面。出于某种原因 <T extends SomeValue>标有“意外绑定(bind)”错误。如果我替换 T? ,没有错误。但是当我使用 T 时为什么会发生这种情况仍然让我感到困惑。 .
任何帮助将不胜感激。

最佳答案

当您使用 T extends SomeValue这样,你引用了一个类型变量 T没有定义,并且不允许您在那里定义类型变量。只有在类型变量声明中,您才可以定义诸如 T extends SomeValue 之类的界限。 .
在接口(interface)或类上,您可以定义 T有你想要的界限,但不是在 enum . Java 中不允许枚举是泛型的。
您可能在未显示的接受 Class<T extends SomeValue> 的构造函数上遇到相同的错误。分配给 className .同样的原因也适用于此。
使用 ? extends SomeValue是一个上限通配符。它基本上意味着“一种特定但未知的类型,即 SomeValue 或子类型”。这在这里很合适,因为您在这里只关心 Class适用于 SomeValue或一些实现类。

关于具有通用属性的 Java 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65333237/

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