Java 枚举和嵌套类

标签 java enums inner-classes

我是 Java 的初学者(Objective-C 是我最熟悉的语言),我真的很难找到一个清晰的例子来说明我想要实现的目标:

public class OuterClass extends ClassToExtend {

    public enum Enum { value1, value2 }

    public class InnerClass extends AnotherClassToExtend {

        public void aMethod(int position) {
            switch (position) {
                case Enum.value1:
                    //Do something
                case Enum.value2:
                    //Do Something else
            }
        }
    }
}

显然这行不通(对枚举的引用),但应该让我了解我正在尝试做什么,需要更改什么才能使这项工作正常进行? 我想我需要在某处声明枚举以引用它?

我将不胜感激对更正的解释,以便我可以学习并希望在未来为自己解决类似的困难。

谢谢

编辑如果方法是@Override 并且签名无法更改怎么办?

最佳答案

首先,您必须打开枚举本身,因此您需要更改以下行:

public void aMethod(int position) {

接受您的枚举而不是整数。其次,需要在开关中直接引用枚举的值,因为枚举已经在当前对象的范围内。

public class OuterClass extends ClassToExtend {

    public enum Enum { value1, value2 };

    public class InnerClass extends AnotherClassToExtend {

        public void aMethod(Enum position) {
            switch (position) {
                case value1:
                    //Do something
                case value2:
                    //Do Something else
            }
        }
    }
}

关于Java 枚举和嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814872/

相关文章:

java - Java调用常量时出错

java - 如何使用采用某些枚举类型实例的方法创建接口(interface)?

java - TypeScript:向枚举添加更多数据

java - 在Android中访问内部类中的变量

Java:为什么在定义字段之前引用字段时没有警告?

java - 使用java : list. item(i).getFirstChild()遍历xml DOM

java - 如何关闭 EasyMock 对象的记录?

c# - 在 Ant 中使用 csc 任务构建时出现问题

c# - 枚举、重叠值、C#

java - Java 中与 Socket 一起使用时可序列化的外部类