java - 枚举上的调用方法

标签 java enums

public enum AgeGroup {
        CHILD{
           public int get(){
               return 10;
           } 
        }, 
        TEEN, YOUNG, MID, OLD;
    }

我有一个枚举 AgeGroup,如您所见,CHILD 有一个方法 get()。有人能告诉我为什么我们不能从 CHILD 调用 get() 这背后的设计方法是什么或者为什么要这样设计?

最佳答案

首先,枚举的所有实例都是相同类型,这意味着所有实例都具有相同的方法集。

您需要在枚举类型本身上声明一个方法,以便实例拥有一个方法:

public enum AgeGroup {
    CHILD{
       public int get(){
           return 10;
       } 
    }, 
    TEEN, YOUNG, MID, OLD;
    public int get() {
        return 0;
    }
}

如果所有实例都像 CHILD 那样覆盖了 get() 方法,您可以将该方法声明为 abstract,这会强制编码器如果添加了新实例,则实现该方法。

最好的方法是使用 final 字段,通过自定义构造函数和 getter 进行初始化:

public enum AgeGroup {
    CHILD{10), TEEN(19), YOUNG(35), MID(50), OLD(80);
    private final int age;
    AgeGroup(int age) {
        this.age = age;
    }
    public int get() {
        return 
    }
}

关于java - 枚举上的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19485111/

相关文章:

java - 在 Java 中使用泛型返回接口(interface)实例的枚举?

php - 通过存储在 PHP 字符串中的名称获取枚举值

java - G1GC选项-XX :ParallelGCThreads vs -XX:ConcGCThreads有什么区别

java - 具有可变输入和一个输出的 Guava 函数

java - Android 在开始 Activity 时崩溃?

java - React Native - java.lang.RuntimeException : SDK location not found. 在 local.properties 中使用 sdk.dir 定义位置

enums - 枚举类型的 JAXB 元素

java - 如何在/system中写入文件(Android)

python - 如何在子类 python 枚举上抑制 "index should be a string"类型错误

c++ - 嵌套枚举的前向声明