2011-09-29 4 views
0
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.WeekDaysとDays.Weekendsを受け入れるようにコンストラクタを必要とするJava型消去

これを設定する方法?

+0

おそらく 'EnumSet'は、[ここ](http://stackoverflow.com/questions/7296785/using-nested-enum-types-in-java/7297243#7297243)で見られますか? – trashgod

答えて

2

にメインでdeclartionを修正して、私はあなたがこれをしたいとは思いません。あなたはそのタイプを圧倒しています。 Days.MONDAYはDays.Weekdays.MONDAYなどとは異なるタイプです。もしそれらが相反するものでなければ、それらの両方を持つことに多くのポイントはありません。私は、あなたは1日の名前のためのenum定数とEnumSet<Days> WeekendDays = EnumSet.of(Days.SATURDAY, Days.SUNDAY)のセットを持つべきだと思います。 WeekendDays =>からの1日の名前の不在は平日です。

+0

EnumSetは私が探していた仕事をします。ありがとうEJP。 – AKh

2

あなたが持っているエラーのみを修正してください。

InnerEnumTestClass<Days.WeekDays> testObj = 
          new InnerEnumTestClass<Days.WeekDays>(Days.WeekDays.MONDAY); 
+0

構文をありがとう。しかし、私はこれを概念的に解決しようとしています。 – AKh