2

我想知道如何访问枚举中的内部类。

例子:

  public enum myEnum{

    public class myInnerClass{

    public void aMethod(){

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

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

谢谢你的帮助 :)

4

3 回答 3

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

这种方式类似于您对普通类内部的内部类所做的方式。没有区别。

于 2013-08-15T12:06:44.257 回答
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();

}
}
于 2013-08-15T12:05:33.373 回答
0

尝试这个

    Class cls = myEnum.myInnerClass.class;
于 2013-08-15T12:04:12.743 回答