java - 使用枚举值作为泛型参数实现接口(interface)

标签 java generics

假设我有一些枚举:

enum Resource { FILE, URL, STREAM }

假设我有一些 Reader 接口(interface):

interface Reader<R extends Resource>

是否可以使用枚举成员创建它的不同实现? 像这样:

class FileReader implements Reader<Resource.FILE>

我的 ide 用红色突出显示此文本(这并不奇怪)。

最佳答案

枚举成员是enum类型的实例,而不是子类。此外,枚举不能被子类化。因此,您无法编译代码。

我建议你这样写:

interface Reader {
    Resource getResource()
    ....
}

class FileReader implements Reader {
    @Override
    public Resource getResource() {return Resource.FILE;}
    ...
}

关于java - 使用枚举值作为泛型参数实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228619/

相关文章:

java.lang.NoClassDefFoundError : javax/json/Json 错误

generics - 为什么通用代数数据类型需要 `T` 成员类型?

Java 泛型 : creating collections of class objects extending Throwable

java - GUI JTextArea & JScrollPane & 定位

java - 泛型和继承问题

generics - 为什么我收到此代码的 'receiver type mismatch' 错误

generics - 如何用汇编语言表示泛型类型

java - 从 Java 中的 JSON 字符串获取类型化的 ArrayList

java - 如果我在另一个静态方法中调用静态方法,Java程序如何加载

java - 如何从Java Maps(多层关联数组)中获取键、值