[英]How to use Nested Enums with Java Type Erasure
public enum Days {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY;
public enum WeekDays{
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
}
public enum WeekEnds{
SATURDAY,
SUNDAY;
}
}
public class InnerEnumTestClass<E extends Enum<E>> {
public E enumtype;
/**
* @param enumtype
*/
public InnerEnumTestClass(E enumtype) {
super();
this.enumtype = enumtype;
}
/**
* @param args
*/
public static void main(String[] args) {
InnerEnumTestClass<Days> testObj =
new InnerEnumTestClass<Days>(Days.WeekDays.MONDAY);
// I get the following compiler error.
//The constructor InnerEnumTestClass<Days>(Days.WeekDays) is undefined
}
}
如您所见,InnerEnumTestClass类仅接受类型,但我需要构造函数接受Days,Days.WeekDays和Days.Weekends。
如何建立这个?
仅修复您遇到的错误。 将声明更正为
InnerEnumTestClass<Days.WeekDays> testObj =
new InnerEnumTestClass<Days.WeekDays>(Days.WeekDays.MONDAY);
我不认为您要这样做。 您正在过度使用类型。 Days.MONDAY的类型与Days.Weekdays.MONDAY的类型不同,依此类推。 我认为您应该为日期名称设置一组枚举常量,并提供一个EnumSet<Days> WeekendDays = EnumSet.of(Days.SATURDAY, Days.SUNDAY)
。 WeekendDays中没有日期名称=>它是一个工作日。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.