如何在Enum中实例化内部类?

时间:2014-04-15 14:07:41

标签: java enums

我想知道如何在枚举中实例化一个内部类...如果我有这样的代码:

public enum TestEnum {
    BIG(1),SMALL(2),LARGE(3);
    int i;

    private TestEnum(int i){
        this.i = i;
    }

    public class cs{
        cs c = new cs(){
            public void met(){
                System.out.println("met in enum inner class");
            }
        };
    }

    public static void main(String[] args){
        //instantiate an object of cs here
    }
}

是否可以实例化?

3 个答案:

答案 0 :(得分:1)

由于enum的内部类是非静态的,因此需要一个对象引用来创建新的cs实例:

TestEnum.cs sample = TestEnum.BIG.new cs();
//                            ^^^
// This could be any instance of TestEnum

请注意,如果cs未使用其“所有者”static,您可以使cs成为enum嵌套类。

答案 1 :(得分:0)

您需要外部类(枚举)的实例才能创建内部类。

tutorial

  TestEnum big = TestEnum.BIG;
        big.new cs();

答案 2 :(得分:0)

这将有效:

TestEnum.BIG.new cs();