如何访问一个Inner类,它位于java中的Enum中

时间:2013-08-15 11:57:44

标签: java enums inner-classes

我想知道如何访问内部类,它位于枚举中。

示例:

  public enum myEnum{

    public class myInnerClass{

    public void aMethod(){

    //do somethink.....
    }
    }
    }

如何在另一个类中访问此类(访问它的方法)?

感谢您的帮助:)

3 个答案:

答案 0 :(得分:6)

您可以使用枚举字段定义的实例访问enum内的内部类:

public enum MyEnum{
    INSTANCE_A,
    INSTANCE_B;

    public class MyInnerClass {
        // This is no different from the inner class in a normal class

        public String show() {
            // You can get the name of the instance for which this method was called.
            System.out.println(MyEnum.this.name());
            return "Hello";
        }
    }
}

现在,要创建MyInnerClass的实例,您可以这样做:

MyEnum instanceA = MyEnum.INSTANCE_A;
MyEnum.MyInnerClass myInnerInstance = instanceA.new MyInnerClass();

System.out.println(myInnerInstance.show());

<强>输出:

INSTANCE_A   // For MyEnum.this.name()
Hello

这种方式类似于你将如何处理正常类中的内部类。没有区别。

答案 1 :(得分:3)

  

我的意思是调用内部类的方法

为了能够调用内部类的方法,你需要一个内部类的实例(除了内部类是静态的并且你想调用静态方法的情况)。

要创建innerClass的对象,您可以执行SSS.INSTANCE.new A();(下面的类)

或者您可以声明它static然后您将使用它与普通类一样。

public enum SSS {
INSTANCE;

public static class A {

}

public static void main(String[] args) {
    SSS.A a = new SSS.A();

}
}

答案 2 :(得分:0)

试试这个

    Class cls = myEnum.myInnerClass.class;