枚举

没有使用枚举的案例:

package com.javaSe.Enum;
/*
这个案例没有使用java中的枚举,在设计方面有什么缺陷?
    以下代码可以编译,也可以运行。没有问题。
    就是设计上你觉得有什么缺陷?
*/
public class EnumTest {
    public static void main(String[] args) {
        // System.out.println(10 / 0); // java.lang.ArithmeticException: / by zero 异常:除数为0
        /*int retValue = divide(10,2);
        System.out.println(retValue);// 0
    
        int retValue2 = divide(10,0);
        System.out.println(retValue2);// 1*/
        boolean success = divide(10,2);
        System.out.println(success ? "计算成功" : "计算失败");
        
    }
    
    /**
     * 以下程序,计算两个int类型数据的商,计算成功返回1,否则返回0
     * @param a int类型的数据
     * @param b int类型的数据
     * @return 返回1表示成功,返回0表示失败
     */
    
    /*
    设计缺陷:在这个方法的返回值类型上,返回一个int不恰当。
    既然最后的结果只是成功和失败,最好使用boolean类型。
    因为true和false正好可以表示两种不同的状态。
     */
    /*public static int divide(int a,int b){
        try {
            int c = a / b;
            // 程序执行到此处表示以上代码没有异常。表示执行成功。
            // 返回10已经偏离了需求,实际上已经出错了,但是编译器没有检测出来。
            // 我们一直想追求的是:所有的错误尽可能让编译器找出来,所有的错误越早发现越好。
            return 1;
        }catch (Exception e){
            // 执行到这里,表示程序出现了异常,执行失败。
            return 0;
        }
    }*/
    
    // 这种设计不错
    public static boolean divide(int a,int b){
        try {
            // 程序执行到此处表示以上代码没有异常。表示执行成功。
            int c = a / b;
            return true;
        }catch (Exception e){
            // 执行到这里,表示程序出现了异常,执行失败。
            return false;
        }
    }
    
    /*
    思考:以上的这个方法设计没毛病,挺好,返回true和false表示两种情况,
    但是在以后的开发中,有可能遇到一个方法的执行结果可能包括三种情况,四种情况,五种情况不等,但是每一个都是可以数清楚的, 一枚一枚都是可以列举出来的。
    这个布尔类型就无法满足需求了。此时需要使用java语言中的枚举类型。
     */
}

枚举的案例以及创建枚举:

package com.javaSe.Enum;


/*
采用枚举的方式改造程序
总结:
    1 枚举是一种引用类型数据
    2 枚举类型怎么定义,语法是:
        enum 枚举类型名{
            枚举值1,枚举值2
        }
    3 结果只有两种情况的,建议使用boolean类型。
    结果超过两种还是可以一枚一枚列举出来的,建议使用枚举类型。
        例如:颜色、四季、星期等都可以使用枚举类型。
*/
public class EnumTest01 {
    public static void main(String[] args) {
        Result r = divide(10,0);
        System.out.println(r == Result.SUCCESS ? "0" : "1");
    }
    
    /**
     * 计算两个int类型数据的商
     * @param a int
     * @param b int
     * @return SUCCESS表示成功   FAIL表示失败
     */
    public static Result divide(int a,int b){
        try {
            int c = a / b;
            return Result.SUCCESS;
        }catch (Exception e){
            return Result.FAIL;
        }
    }
}


// 枚举:一枚一枚可以列举出来的,才建议使用枚举类型
// 枚举编译之后也是生成class文件。
// 枚举也是一种引用数据类型。
// 枚举中的每一个值可以看做是常量
enum Result{
    // SUCCESS 是枚举Result类型中的一个值。
    // FAIL 是枚举Result类型中的一个值。
    // 枚举中每一个值,可以看做是"常量"
    SUCCESS,FAIL
}
 
创建颜色枚举:
package com.javaSe.Enum;
/*颜色枚举类型*/
public enum Color {    
    /*    颜色值:红 蓝 黄  黑     */    
    RED,BLUE,YELLOW,BLACK
}
 
创建四季枚举:
package com.javaSe.Enum;


/**
* 四季枚举
*/
public enum Season {
    // 春夏秋冬
    SPRING,SUMMER,AUTUNM,WINTER
}

switch支持枚举案例:

package com.javaSe.Enum;


public class SwitchTest {
    public static void main(String[] args) {
        // switch支持枚举类型。
        /*
        switch也支持String,int,枚举
        低版本不支持String 枚举,只支持int
         */
        switch (Season.SUMMER){
            case SPRING:
                System.out.println("春天");
                break;
            case SUMMER:
                System.out.println("夏天");
                break;
            case AUTUNM:
                System.out.println("秋天");
                break;
            case WINTER:
                System.out.println("冬天");
                break;
        }
    }
}
原文地址:https://www.cnblogs.com/xlwu/p/13257878.html