• 浅谈java枚举类


    先来一段常用枚举类代码结构

    public enum Color {
        //枚举对象
        RED(1,"红色"),GREEN(2,"绿色"),BLUE(3,"蓝色");
        
        //私有成员属性
        private int index;
        private String name;
        
        //私有构造方法
        private Color(int index, String name) {
            this.index = index;
            this.name = name;
        }
        
        //公共的get方法
        public int getIndex() {
            return index;
        }
    
        public String getName() {
            return name;
        }
        
        //获取某实例的静态方法
        public static Color getInstance(int num) {
            Color[] values = Color.values();
            for(Color c : values) {
                if(c.getIndex() == num) {
                    return c;
                }
            }
            throw new IllegalArgumentException("没有这种颜色");
        }
    
        
    }

    从上面的代码中可以看出枚举的常用结构为:1.枚举实例对象,2.如果有属性就添加私有成员变量。3.构造方法为私有的,防止再创建其他实例对象。4.只有get方法,防止修改原对象的属性值。5,其他方法,比如根据某个属性获取对象实例

    下面再深入看看枚举类中一些隐藏的东西

    1.枚举类都隐式的继承自java.util.Enum类,如果你显示的继承则无效

    2.枚举类中都有一些基本的方法,包括 

      values():返回enum实例的数组,而且该数组中的元素严格保持在enum中声明时的顺序。

      name():返回实例名。

      ordinal():返回实例声明时的次序,从0开始。

      getDeclaringClass():返回实例所属的enum类型。

      equals() :判断是否为同一个对象。

      compareTo():比较方法,因为Enum类实现了Comparable和Serializable接口

      看如下代码

      枚举类

    public enum Color {
        RED,GREEN,BLUE,YELLOW,ORANGE;
    }

      测试类

    public class EnumTest {
        public static void main(String[] args) {
            Color[] values = Color.values();
            for(Color c :values) {
                System.out.print(c.name()+"---");
                System.out.print(c.ordinal()+"---");
                System.out.println(c.getDeclaringClass());
            }
            
        }
    }

      测试结果

    RED---0---class com.pancras.test.Color
    GREEN---1---class com.pancras.test.Color
    BLUE---2---class com.pancras.test.Color
    YELLOW---3---class com.pancras.test.Color
    ORANGE---4---class com.pancras.test.Color

    还有其他更多用法等你来发现

    参考资料:https://www.cnblogs.com/jingmoxukong/p/6098351.html

  • 相关阅读:
    大数据-hive理论(2)DDL
    大数据-hive理论(1)基础,原理,安装
    大数据-hbase理论
    java-多线程与锁
    java-自定义注解
    java-filebeat+elk的数据传输
    java-es查询
    java-创建完整的springCloud项目
    【从零单排】详解 Log4j + Slf4j 等日志框架(上篇)
    IntelliJ 中 Git 报错 Could not read from remote repository
  • 原文地址:https://www.cnblogs.com/coffee9527/p/8707568.html
Copyright © 2020-2023  润新知