java中枚举方法

Java中的枚举是一种类型,顾名思义:就是一个一个列举出来。所以它一般都是表示一个有限的集合类型,它是一种类型

来源维基百科:在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 [1] 是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。

根据以往定义常量是这样子的,如下(这种方法称作int枚举模式,存在着许多不足的地方,而且在类型安全性和使用方便性方面没有任何帮助)

public static final int FUJI = 0;
public static final int PIPPIN = 1;
public static final int GRANNY_SMITH = 2;

而使用枚举类可以定义为如下所示:

public enum Apple {
	FUJI,
	PIPPIN,
	GRANNY_SMITH
}

枚举类型背后的基本想法非常简单:它们是通过共有的静态final域为每个枚举常量导出实例的类。因为没有可以访问的构造器,枚举类型是真正的final类型

我们可以试下switch语句来尝试一下,先写一个静态方法

public static void doing(Apple apple){ //这里的Apple使用的是上面刚刚定义的枚举类
        switch (apple){
            case FUJI:
                System.out.println("this is fuji");
                break;
            case PIPPIN:
                System.out.println("this is pippin");
                break;
            case GRANNY_SMITH:
                System.out.println("this is granny_smith");
                break;
        }
    }
public static void main(String[] args) {
	doing(Apple.FUJI);
}

打印结果为 “this is fuji”,看起来好像挺简单的,而且代码也简化不少

再写个简单计算器的例子:
定义一个加减乘除的方法

public enum CAL{

    PLUS {double apply(double x,double y){return x + y;}},
    MINUS {double apply(double x,double y){return x - y;}},
    TIMES {double apply(double x,double y){return x * y;}},
    DIVIDE {double apply(double x,double y){return x / y;}};

    abstract double apply(double x,double y);
}

然后我们在main方法中使用我们定义的枚举类方法

public static void main(String[] args) {
	System.out.println(CAL.PLUS.apply(1,2));
}

打印结果为 3.0

你可能感兴趣的:(JavaSE)