• Java Enum 枚举的简单使用


    一、什么是枚举

      值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。所使用的语言给每个字段都分配一个基础类型的特定值。JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

      枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 [1]  。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
    枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。
     

    二、枚举的使用

      1、枚举的定义和简单访问

    package com.test;
    
    public class EnumProgram {
        //获得枚举的常量
        Signal number = Signal.FOUR;
        int n = 0;
        //定义一个方法
        public void calculation(){
                switch (number){
                    case ONE:
                        n=1;
                        break;
                    case TWO:
                        n=2;
                        break;
                    case Three:
                        n=3;
                        break;
                    case FOUR:
                        n=4;
                        break;
    
                }
        }
    
        public static void main(String[] args) {
            EnumProgram en = new EnumProgram();
            System.out.println(en.n);
            en.calculation();
            System.out.println(en.n);
    
            System.out.println(Signal.Three);
    
        }
    
    }
    
    //创建一个枚举,里面放了 ONE,TWO,Three,FOUR 四个常量
    enum Signal{
        ONE,TWO,Three,FOUR
    }

    结果:

      2、向枚举中添加方法

    package com.test;
    
    public class EnumProgram {
        public static void main(String[] args) {
            //使用
            System.out.println(Color.BULE.getName());
            System.out.println(Color.BULE.getIndex());
            System.out.println(Color.getColorName(1));
            System.out.println(Color.getColorIndex("绿色"));
        }
    }
    
    //创建一个枚举
    enum Color{
        RED("红色",1),BULE("蓝色",2),GREEN("绿色",3),WHITE("白色",4);
        private String name;
        private int index;
    
        //构造函数
        private Color(String name,int index){
            this.name=name;
            this.index=index;
        }
        //枚举方法
        public static String getColorName(int index){
            for(Color c : Color.values()){
                if(c.getIndex()==index){
                    return c.getName();
                }
            }
            return null;
        }
    
    
        //枚举方法
        public static int getColorIndex(String name){
            for(Color c : Color.values()){
                if(c.getName()==name){
                    return c.getIndex();
                }
            }
            return -1;
        }
    
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getIndex() {
            return index;
        }
    
        public void setIndex(int index) {
            this.index = index;
        }
    }

    结果:

       3、枚举类继承接口
    package com.test;
    
    public class EnumProgram {
        public static void main(String[] args) {
            //使用
            Color.BULE.print();
        }
    }
    
    //定义一个接口
    interface FunRea{
        void print(); //定义一个方法
    }
    
    //创建一个枚举,继承接口
    enum Color implements FunRea{
        RED("红色",1),BULE("蓝色",2),GREEN("绿色",3),WHITE("白色",4);
        private String name;
        private int index;
    
        //构造函数
        private Color(String name,int index){
            this.name=name;
            this.index=index;
        }
    
        //实现接口的方法
        @Override
        public void print() {
            System.out.println(this.name+" : "+this.index);
        }
    
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getIndex() {
            return index;
        }
    
        public void setIndex(int index) {
            this.index = index;
        }
    
    }

    结果:

     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    0615-temp-python web
    ResultSet 转ArrayList
    svn与git
    日期与时间
    springboot 注解
    函数式编程
    几个O
    springboot框架中的异步执行
    JDBC
    mysql 导出表结构
  • 原文地址:https://www.cnblogs.com/ldl326308/p/9477923.html
Copyright © 2020-2023  润新知