簡體   English   中英

如何在Java類型擦除中使用嵌套枚舉

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM