java - 如何创建抽象枚举?

标签 java enums

接下来我的问题是,我在 java 中有一个组件可以获取 Enum,但我需要将该组件与多个 ENUM 一起使用,这些枚举是相关的。

然后,我有两个下一个 ENUM

public enum Train{
    A, B, C
}

public enum Bus{
    L,U,V
}

该组件获得一个 ENUM,但我希望可以设置火车或公共(public)汽车,具体取决于先决条件

如果我选择 Bus set to 组件 Bus Enum,如果选择 Tran set Train enum

我的托盘带有下一个模式的界面:

public interface Transport(){}

public enum Bus implements Transport
publi enum Train implements Transport

但是不起作用,因为组件调用了枚举方法,并且只能设置枚举方法

我无法将 Enum 作为通用传递,因为我需要对在组件中设置的参数进行一些控制。

有什么想法吗?

最佳答案

以下是如何使用扩展 Enum 并实现 Transport 的泛型类型参数 T 来实现您想要的效果:

interface Transport {}

enum Bus implements Transport {
    A, B, C
}

enum Train implements Transport {
    L, U, V
}

public class Test<T extends Enum & Transport> {
    private T transport;

    Test(T transport) {
        this.transport = transport;

        // Can still use enum methods
        System.out.println(this.transport.name());
        System.out.println(this.transport.ordinal());
    }

    public static void main(String[] args) {
        new Test(Train.L); // prints out "L", "0"
    }
}

关于java - 如何创建抽象枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53955876/

相关文章:

java - 获取一周中给定日期的下一个 LocalDateTime

java - quartz 调度程序2.0

enums - DART - 我可以将字符串转换为枚举吗?

java - 同一项目,同一分支,两台机器: unit tests producing inconsistent results

java - Spring 的属性子集

java - 带有默认抛出子句的枚举?

objective-c - objective-c : way to check for enabled flags

c++ - Switch 语句不适用于枚举 (C++)

java - 使用接口(interface)模拟可扩展枚举

java - 打印 JEditorPane 时出现损坏的图像图标