Java根据枚举调用不同方法

在Java编程中,枚举(Enumeration)是一种特殊的数据类型,用于定义一组固定的常量。枚举常常用于表示有限的选项,例如一周的天数、月份等。除了定义常量外,枚举还可以用于实现多态性,即根据不同的枚举值调用不同的方法。

枚举基础

在Java中,使用enum关键字定义枚举类型。下面是一个简单的示例:

enum Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}

在上面的示例中,我们定义了一个名为Day的枚举类型,它包含了一周的所有天数。每个枚举常量都是Day类型的实例,可以像使用其他对象一样使用它们。

枚举方法

枚举类型可以包含方法,这些方法可以在每个枚举常量上调用。下面是一个示例,演示如何在枚举中定义方法:

enum Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY;
    
    public void printGreeting() {
        switch (this) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
                System.out.println("Hello!");
                break;
            case FRIDAY:
                System.out.println("TGIF!");
                break;
            default:
                System.out.println("Weekend!");
                break;
        }
    }
}

在上面的示例中,我们在枚举类型的定义末尾添加了一个分号,然后在分号后面定义了一个printGreeting()方法。这个方法根据不同的枚举值输出不同的问候语。

调用枚举方法

要调用枚举方法,我们需要使用枚举类型的名称和枚举常量的名称,中间用点号(.)分隔。下面是一个示例:

Day day = Day.MONDAY;
day.printGreeting();

在上面的示例中,我们首先创建了一个Day类型的变量day,并将其赋值为枚举常量MONDAY。然后,我们调用day对象的printGreeting()方法,根据枚举常量的值输出相应的问候语。

根据枚举调用不同方法

在某些情况下,我们希望根据枚举值的不同来调用不同的方法,这就涉及到了多态性的概念。下面是一个示例,演示如何根据枚举值调用不同的方法:

enum Day {
    MONDAY {
        public void printGreeting() {
            System.out.println("Hello!");
        }
    },
    TUESDAY {
        public void printGreeting() {
            System.out.println("Hello!");
        }
    },
    WEDNESDAY {
        public void printGreeting() {
            System.out.println("Hello!");
        }
    },
    THURSDAY {
        public void printGreeting() {
            System.out.println("Hello!");
        }
    },
    FRIDAY {
        public void printGreeting() {
            System.out.println("TGIF!");
        }
    },
    SATURDAY {
        public void printGreeting() {
            System.out.println("Weekend!");
        }
    },
    SUNDAY {
        public void printGreeting() {
            System.out.println("Weekend!");
        }
    };
    
    public abstract void printGreeting();
}

在上面的示例中,我们在每个枚举常量后面添加了一对花括号,并在花括号中重写了printGreeting()方法。这样,每个枚举常量都有了自己不同的实现。

要调用不同的方法,我们只需要根据枚举值创建对应的枚举常量,并调用其方法即可。下面是一个示例:

Day day = Day.FRIDAY;
day.printGreeting();

在上面的示例中,我们创建了一个Day类型的变量day,并将其赋值为枚举常量FRIDAY。