[英]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.