您好我尝试传递给接口作为参数Enum
对象,然后将其解析为身体默认功能界面中的List<Enum>
。所以我的界面如下所示
public interface SpecificObject<T extends Enum<T>>{
default List<Enum> asMyList(){
List<Enum> list = Arrays.asList(T.values()); // not works
return list;
}
}
在此之后我以这种方式使用飞机
class SomeObject implements SpecificObject<MyEnum>{
public SomeObject()
// dont' must Overwrite because I use as default
}
在代码使用的某处,如下所示
SpecificObject specificObject = new someObject SomeObject();
List<Enum> list = someObject.asMyList();
JAVA 8有可能吗?
答案 0 :(得分:0)
步骤一步:
public static <T extends Enum<T>> List<T> getEnumConstants(T object) {
assert object != null;
Class<T> type = object.getClass();
T[] constants = type.getEnumConstants();
return Arrays.asList(constants);
}
未经测试,但这看起来可行。然而,列表与原始T[]
一样不灵活。
将函数打包在接口中作为默认方法不会带来任何好处。
注意{1}}没有为枚举输入,并且会为非枚举产生Class.getEnumConstants
。
(当停留在一个特定的Enum中时,EnumSet(一种bitset)和EnumMap(一种数组)通常非常高效和快速。)