gpt4 book ai didi

java - 如何像使用接口(interface)一样使用枚举?

转载 作者:行者123 更新时间:2023-11-30 08:02:17 24 4
gpt4 key购买 nike

如何将 SomeEnum1 或 SomeEnum2 分配给实现 SomeInterface 的“枚举”?我不能直接指定接口(interface),因为它是类而不是枚举。

我确定有一个特定的语法糖可以使这项工作有效,但我想不出来。

例子:

public class Main {
public interface SomeInterface {
public String doSomething();
}

public enum SomeEnum1 implements SomeInterface {
something1;

@Override
public String doSomething() {
return "SomeEnum1";
}
}

public enum SomeEnum2 implements SomeInterface {
something2;

@Override
public String doSomething() {
return "SomeEnum2";
}
}

public static void main(String[] args) {
// Works but not polymorphic
SomeEnum1 e1 = SomeEnum1.something1;
System.out.println(e1.name() + " " + e1.doSomething());

// Not an enum
// SomeInterface e2 = SomeEnum1.something1;
// System.out.println(e2.name() + " " + e2.doSomething());

// Bounds mismatch
// Enum<SomeInterface> e3 = SomeEnum1.something1;
// System.out.println(e3.name() + " " + e3.doSomething());
}
}

最佳答案

如果将值传递给方法,则可以使用泛型通过 2 个约束来限制 SomeInterface 的类型:

public static void main(String[] args) {
print(SomeEnum1.something1);
}

public static <T extends Enum & SomeInterface> void print(T t) {
System.out.println(t.name() + " " + t.doSomething());
}

关于java - 如何像使用接口(interface)一样使用枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37067184/

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