zoukankan      html  css  js  c++  java
  • Java-枚举类型

    枚举介绍

    Java中的枚举是JDK5.0以后添加的新特性,枚举是用来定义一组数量确定的常量的类。
    枚举类是一个特殊的类,它和普通类一样可以有构造方法,也可以有属性和普通方法。可以实现接口。

    枚举的定义

    public enum Color{
        RED,BLACK,BLUE;
    }
    

    这就定义了一个枚举类,其中的RED,BLACK,BLUE是这个枚举类的实例,每个实例需要用‘,’隔开,最后一个使用‘;’表示结束。说它们是实例那为什么没有用new呢?
    那是因为在JDK5.0以前想要使用枚举需要自己定义。

    public class Color{
        public static final int RED = 1;
        public static final int BLUE = 2;
        public static final int BLACK = 3;
    }
    

    在JDK5.0以后,为了能够更加方便的使用枚举,就出现了enum关键字。定义了枚举类之后,就把之前全部重复的代码给省去了。比如public static final int
    所以才有了上面这样简单的定义。

    枚举的使用

    在定义了枚举类之后,直接使用类名加属性就可以调用。因为所有都是static的。

    public class EnumTest {
        public static void main(String[] args) {
            Color black = Color.BLACK;
        }
    }
    

    在switch中使用

    public class EnumTest {
        public static void main(String[] args) {
            Color red = Color.RED;
            switch (red){
                case RED:
                    System.out.println("红色");
                    break;
                case BLUE:
                    System.out.println("蓝色");
                    break;
                case BLACK:
                    System.out.println("黑色");
                    break;
            }
        }
    }
    

    在switch中使用时,不需要加类名,直接使用对象就行了。

    枚举类的原理

    枚举类实际上是继承了Enum类。

    Enum中常用的方法:

    返回类型 方法名 说明
    String toStirng() 返回枚举类的名称
    枚举类型[] values() 返回返回所有枚举常量
    枚举类型 valuesOf(String name) 根据名称返回枚举常量

    枚举类实现接口

    枚举类实现了接口之后,需要实现对应的抽象方法,有两种实现方式,会有不一样的结果。
    第一种:在枚举类中实现

    public class EnumTest {
        public static void main(String[] args) {
            Color.RED.show();
            Color.BLUE.show();
            Color.BLACK.show();
        }
    }
    
    interface Show{
        void show();
    }
    
    enum  Color implements Show {
        RED,
        BLUE,
        BLACK;
    
        @Override
        public void show() {
            System.out.println("枚举了红色");
        }
    }
    /*
    运行结果:
    枚举了红色
    枚举了红色
    枚举了红色
    */
    

    如果我想要每个颜色打印不一样的数据,这种实现方式就不行了,需要第二种实现方式。

    在每个常量后面实现方法:

    enum  Color implements Show {
        RED{
            @Override
            public void show() {
                System.out.println("枚举了红色");
            }
        },
        BLUE{
            @Override
            public void show() {
                System.out.println("枚举了蓝色");
            }
        },
        BLACK{
            @Override
            public void show() {
                System.out.println("枚举了黑色");
            }
        };
    }
    /*
    运行结果:
    枚举了红色
    枚举了蓝色
    枚举了黑色
    
    */
    
  • 相关阅读:
    一个母亲一生撒的八个谎言(含泪推荐)!
    穷人必须做的四件大事
    八种人不太可能驰骋职场,有你吗?
    是谁让我如此忧伤?
    拒绝平淡:我用十年的时间名满天下
    高性能利器!华为云MRS ClickHouse重磅推出!
    MySQL 连接为什么挂死了?
    解读登录双因子认证(MFA)特性背后的TOTP原理
    云图说|初识数据仓库服务:云时代的数据分析助手
    号外!5G+X联创营华为云官网上线,5G 创业春天来了!
  • 原文地址:https://www.cnblogs.com/Z-Dey/p/12900496.html
Copyright © 2011-2022 走看看