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

  • 相关阅读:
    ASE19团队项目 beta阶段 model组 scrum report list
    ASE19团队项目 beta阶段 model组 scrum7 记录
    ASE19团队项目 beta阶段 model组 scrum6 记录
    ASE19团队项目 beta阶段 model组 scrum5 记录
    ASE19团队项目 beta阶段 model组 scrum4 记录
    ASE19团队项目 beta阶段 model组 scrum3 记录
    ASE19团队项目 beta阶段 model组 scrum2 记录
    ASE19团队项目 beta阶段 model组 scrum1 记录
    【ASE模型组】Hint::neural 模型与case study
    【ASE高级软件工程】第二次结对作业
  • 原文地址:https://www.cnblogs.com/shuaifing/p/9210017.html
Copyright © 2011-2022 走看看