接下来的问题是,我在Java中有一个获得枚举的组件,但是我需要将该组件与几个与这些枚举有关的ENUM一起使用。
然后,我有两个下一个ENUM
public enum Train{
A, B, C
}
public enum Bus{
L,U,V
}
该组件获得一个ENUM,但我想根据先决条件设置火车或公共汽车
如果我选择“公交车”设置为组件“公交车枚举”,那么如果选择“运输车设置”火车枚举
具有下一个模式界面的我托盘:
public interface Transport(){}
public enum Bus implements Transport
publi enum Train implements Transport
但是不起作用,因为该组件调用枚举方法,并且只能设置枚举方法
我无法将Enum传递为泛型,因为我需要对在组件中设置的参数进行一些控制。
有什么主意吗?
答案 0 :(得分:2)
使用通用类型参数T
扩展Enum
并实现Transport
的方法来实现所需的目标:
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"
}
}
答案 1 :(得分:0)
您不能这样做,请检查jls-8.9,您会在下面看到消息
枚举类型(第8.9节)不能声明为抽象;这样做会导致 出现编译时错误。
一个枚举类型是隐式最终的,除非它包含至少一个枚举 具有类主体的常量。
显式声明一个枚举类型是一个编译时错误 最终。