JavaSE --- 枚举

1.概念

枚举是Java的一种特殊类型,是特殊类是把class变为了enum

其作用:是为了做信息的标志和信息的分类,

通俗:相当于常量,用来做标志的,但是却比常量优雅,它是限制你一些代码乱来

2.定义格式

修饰符 enum 枚举名称{
    第一行都是罗列枚举类实例的名称
}

3.利用反编译了解枚举

源码

public enum  Season {
    //第一行都是罗列枚举类实例的名称,也就是对象
    SPARK,HADOOP,HIVE,FLUME,KAFKA;
}

随便建一个java文件夹将代码复制到文本文件,改为Season.java,打开cmd用javac,javap进行编译和反编译了解枚举

由上可以得到枚举的特征:

  1. 枚举类都是继承了枚举类型:java.lang.Enum

  1. 枚举都是最终类,不可用与继承(因为用了final修饰)

  1. 构造器都是私有的,枚举对外不能创建对象(上面没有显示,因为在底层)

  1. 枚举的第一行都是默认列举枚举对象的名称(源码可看)

  1. 枚举类相当于多例模式

4.枚举的使用场景

可用于做信息的标志和分类

优点:代码可读性好,入参约束严谨,是最好的信息分类技术

直接代码展示:

首先利用常量来作为标志

public class Text {
    //定义常量
    public static final int HADOOP = 1;
    public static final int SPARK = 2;
    public static final int HIVE = 3;
    public static final int FLINE = 4;

    public static void print_text(int flag){
        switch (flag){
            case HADOOP:
                System.out.println("输出hadoop");
                break;
            case SPARK:
                System.out.println("输出spark");
                break;
            case HIVE:
                System.out.println("输出hive");
                break;
            case FLINE:
                System.out.println("输出flume");
                break;
        }
    }
    
    public static void main(String[] args) {
        //调用方法的时候我既可以输入常量名
        print_text(HADOOP);
        //还可以输入数据
        print_text(2);
        //还可以输入很多不符合代码的数据,但不报错
        print_text(1111111);
        //这就很尴尬
    }
}

但是使用了枚举

枚举类

package com.hu.d5_enum;

/**
 * 枚举类
 */
public enum  Season {
    //第一行都是罗列枚举类实例的名称
    SPARK,HADOOP,HIVE,FLINE;
}

测试类

public class Text2 {
    //使用枚举作为形参
    public static void print_text(Season s){
        //swith会自动识别枚举
        switch (s){
            case HADOOP:
                System.out.println("输出hadoop");
                break;
            case SPARK:
                System.out.println("输出spark");
                break;
            case HIVE:
                System.out.println("输出hive");
                break;
            case FLINE:
                System.out.println("输出flume");
                break;
        }
    }

    public static void main(String[] args) {
        //调用方法的时候智能传入枚举类型,
        //值得注意的是,传入参数的时候要使用 枚举.实例
        print_text(Season.HADOOP);
        //输入数据会报错
        print_text(2);
    }
}

效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值