zoukankan      html  css  js  c++  java
  • java中的enum枚举类

    知识点:java代码中枚举enum的使用

    (1)应用场景

    某些时候,一个类的对象是有限的,并且是固定的,如季节,一年只有春夏秋冬;星期类,星期一至星期日

    这种实例是有限的并且是固定的的类,在java中称之为枚举类,当枚举类中只有一个实例的时候,相当于枚举单例(https://www.cnblogs.com/shuaifing/p/10578661.html

    (2)定义一个枚举类  EmployeeState

    package com.agesun.attendance.common.enums;
    public enum EmployeeState {

    //通过有参构造函数,实例化3个枚举实例,并赋值
    ENABLE(0,"启用"), // 相当于 public static final EmployeeState ENABLE=new EmployeeState(0,"启用"); 删除其他部分保留ENABLE对象名,()和实参“0“,”启用”
    DISABLE(1,"禁用"), //public static final EmployeeState DISABLE=new EmployeeState(1,"禁用");
    QUIT(2,"离职"); //public static final EmployeeState QUIT=new EmployeeState(2,"离职");


    private int code;//实体类中的一个字段,为数字
        private String value; //每个int类型的数字代表一个中文含义

    public int getCode() {
    return code;
    }

    public String getValue() {
    return value;
    }

    EmployeeState(int code, String value){ //构造方法
    this.code = code;
    this.value = value;
    }
    }

    (3)枚举测试类main方法

    //enum关键字定义枚举类
    //1.常用方法:values()valueOf(String name)
    //2.枚举类实现接口:不同的枚举类对象调用被重写的方法,执行不同的内容。(相当于每一个对象重写接口的抽象方法)


    public static void main(String[] args){
    //1.打印所有枚举实例
    for(EmployeeState enum1:EmployeeState.values()){
    System.out.println(enum1.getCode()+"------"+enum1.getValue());
    }
            System.out.println("===============================================");

    //2.根据枚举实例名称,获取枚举实例
    EmployeeState enum2=EmployeeState.valueOf(EmployeeState.class,"ENABLE");//不带枚举类也可以 EmployeeState enum2=EmployeeState.valueOf("ENABLE");
    System.out.println(enum2.getCode()+"----"+enum2.getValue());
    }


    输出结果:


    (4)补充:枚举实例可以重写抽象方法,执行不同的内容

    代码
    public enum EmployeeState implements show{
    //通过有参构造函数,实例化3个枚举实例,并赋值
    ENABLE(0,"启用"){
    public void showInfo(){
    System.out.println("正常状态!"); //每个实例重写接口里的抽象方法,实现各自的功能
    }
    },
    DISABLE(1,"禁用"){
    public void showInfo(){
    System.out.println("禁用状态!");
    }
    },
    QUIT(2,"离职"){
    public void showInfo(){
    System.out.println("离职状态!");
    }
    };
    private int code;//实体类中的一个字段,为数字
    private String value; //每个int类型的数字代表一个中文含义
    public int getCode() {
    return code;
    }
    public String getValue() {
    return value;
    }
    EmployeeState(int code, String value){ //构造方法
    this.code = code;
    this.value = value;
    }
    @Override
    public void showInfo() {
    System.out.println("接口抽象方法!"); //重写接口的抽象方法,这里的抽象方法如果不输出内容,将接口里的抽象方法写到这里,EmployeeState类不实现接口也是可以的 如:abstract void showInfo();
    }
    }

    interface show1{ //抽象接口
    void showInfo();
    }
    main方法
    public static void main(String[] args) {

    //3.不同的枚举类对象调用被重写的方法,执行不同的内容
    EmployeeState enum3=EmployeeState.valueOf("DISABLE");
    enum3.showInfo();
    }

    结果



    参考:https://blog.csdn.net/lzj3462144/article/details/76832779?foxhandler=RssReadRenderProcessHandler

  • 相关阅读:
    HDU
    01字典树模板
    扩展欧几里得和乘法逆元
    HDOJ-1156 Brownie Points II 线段树/树状数组(模板)
    CF-825E Minimal Labels 反向拓扑排序
    CF-831D Office Keys 思维题
    RMQ 解决区间查询问题
    hdu 5073 有坑+方差贪心
    hdu 5074 相邻数和最大dp
    hdu 5078 水题
  • 原文地址:https://www.cnblogs.com/shuaifing/p/9210017.html
Copyright © 2011-2022 走看看