您好,
是否有可能不同的枚举值实现不同的接口(就像不同的枚举值可能实现不同的方法一样)?
我问的原因:我目前有一个具有一组public static final
属性的类,每个属性共享一个公共接口,但在代码中的其他地方也需要一个不同的接口。
public interface Wrapper {}
public interface StringWrapper extends Wrapper {}
public interface IntegerWrapper extends Wrapper {}
public final class EnumerationOfWrappers {
public static final StringWrapper ONE = ...;
public static final IntegerWrapper TWO = ...;
}
public class SomeOtherClass {
public String get(StringWrapper w);
public Integer get(IntegerWrapper w);
}
由于类型擦除,我不能使用泛型但使用public static final
属性而不是枚举常量接缝脏。我可以将方法命名为getString
或getInteger
,但这种方式不必要。
- ooxi
答案 0 :(得分:0)
当您声明一个枚举(比如Color)及其成员(比如BLUE,GREEN)时,这些成员的类型将被定义为枚举类型(即BLUE和GREEN的颜色为Color)。
在你的情况下;最多可以将基础类型存储为枚举值的成员变量。像这样:
enum WrapperEnum {
ONE(EnumerationOfWrappers.ONE),
TWO(EnumerationOfWrappers.TWO);
private Wrapper underlyingWrapper;
WrapperEnum(Wrapper underlyingWrapper) {
this.underlyingWrapper = underlyingWrapper;
}
}