美文网首页
java枚举的理解

java枚举的理解

作者: liangxifeng833 | 来源:发表于2019-04-14 17:54 被阅读0次

一.概念

  • 枚举是一种独立的类型, 与class类是同级的关系.
  • 让某个类型的变量的取值只能为若干个固定值中的一个, 否则编译器会报错.
  • 枚举可以让编译器在编译的时候就可以控制程序非法赋值, 使用普通变量的方式在开发过程中无法做到.
  • JDK1.5以后, 使用关键字 enum 定义一个新的类型, 称为枚举类型.

二.不使用枚举

  • 定义EnumDemo类
/**
 * Description: demo
 * Create by liangxifeng on 2019-4-14
 */
public class EnumDemo {
    public static final int RED = 0x1;
    public static final int GREEN = 0x2;
    public static final int BLUE = 0x3;
    public int color;

    @Test
    public void test1(){
        color = RED;
        color = 4;
    }

}
  • 以上定义的类中有三个常量, 我们使用color变量可以存储三个常量的任意一个值, 但是color同时也可以存储int型的其他值, 我们并不能强制让color变量只允许存储三个常量中的任何一个值, 那么要实验这个效果, 我们就需要用到枚举.

三.使用枚举

  • 使用 enum 关键字定义枚举, 实际上相当于定义一个类, 此类继承了 Enum类而已. Enum类中定义了如下三个方法:
    image.png
  • 先定义 Color 枚举类
        package com.soufang.esproject.lxf;
    
        /**
         * 定义一个枚举类型
         */
        public enum  Color {
            /**
             * 对于枚举类型来说, 以下三个常量代表的是类型为Color的枚举对象.
             *      RED是Color的一个对象
             *      GREEN也是Color的一个对象
             *      BLUE同样也是Color的一个对象.
             * 只不过这三个对象是在枚举类的内部事先给定好的, 其他的外面是不能在产生Color枚举类型对象的.
             * 也就是说枚举类型对象一定是在枚举类型内部来声明和定义的, 外部是不可以的.
             */
            RED, GREEN, BLUE;
        }
    
  • 定义Enum使用枚举类型
       package com.soufang.esproject.lxf;
      import org.junit.jupiter.api.Test;
      import java.util.Arrays;
      import java.util.EnumMap;
      import java.util.EnumSet;
      /**
       * Description: demo
       * Create by liangxifeng on 2019-4-14
       */
      public class EnumDemo {
          public static final int RED = 0x1;
          public static final int GREEN = 0x2;
          public static final int BLUE = 0x3;
          public int color;
    
          /**
           * 不使用枚举类类型, color可以存储除了以上三个常量之外, 还可以存储其他int类型的数据
           */
          @Test
          public void test1(){
              color = RED;
              color = 4;
          }
    
          /**
           * 定义一个枚举类型的变量, 因为Color是个枚举类型
           * 使用枚举类型 colorEnum只能赋值为Color中定义的三个对象.
           */
           public Color colorEnum;
          @Test
          public void test2(){
              colorEnum = Color.RED;
              //打印名称, 输出: RED
              System.out.println(colorEnum.name());
              //打印需要, 输出: 0
              System.out.println(colorEnum.ordinal());
              //打印名称,输出: RED, 与.name()一致
              System.out.println(colorEnum.toString());
              //打印所属类型, 输出: com.soufang.esproject.lxf.Color
              System.out.println(colorEnum.getClass().getName());
    
              //获取枚举中所有值, 输出: [RED, GREEN, BLUE]
              Color[] values = Color.values();
              System.out.println(Arrays.toString(values));
          }
    
          /**
           * set 和 map 的枚举类型
           */
              @Test
              public void test3(){
              /**
               * 枚举set
               * 将Color中定义的所有枚举对象赋值到set集合中, 用来管理枚举元素的集合
               */
              EnumSet<Color> set = EnumSet.allOf(Color.class);
              for (Color c: set){
                  System.out.println(c);
              }
    
              /**
               * 枚举map
               * 泛型key要用枚举类型
               */
              EnumMap<Color,String> map = new EnumMap<>(Color.class);
              map.put(Color.RED,"red");
              map.put(Color.GREEN,"green");
              map.put(Color.BLUE,"blue");
          }
    
      }
    

四.更多功能请查看

相关文章

  • 枚举

    枚举 wiki Java的枚举类型用法介绍 深入理解Java枚举类型(enum) 为什么要用enum? 学习计划 ...

  • java枚举的理解

    一.概念 枚举是一种独立的类型, 与class类是同级的关系. 让某个类型的变量的取值只能为若干个固定值中的一个,...

  • Kotlin零基础学习 枚举

    枚举让代码变得更可读,容易理解。Android 用java语言很少写枚举, 因为Enum 需要占用较大的内存,所以...

  • 深入理解 Java 枚举

    ? 本文已归档到:「javacore」? 本文中的示例代码已归档到:「javacore」 1. 简介 enum 的...

  • Java枚举

    Java中的每个枚举都是java.lang.Enum的final子类,枚举类中的每个枚举常量都是该枚举类的一个实例...

  • Kotlin基础---枚举类

    Java的枚举 Kotlin的枚举 枚举是极少数Kotlin声明比Java使用了更多的关键字的例子Kotlin用了...

  • 枚举学习

    java enum枚举类 enum(枚举)类介绍 **java枚举类是一组预定义常量的集合,使用enum关键字声明...

  • Java枚举类

    枚举其实是个特殊的 Java 类,创建枚举需用enum关键字,枚举类都是java.lang.Enum的子类,jav...

  • 面试要点(先学着)

    1.Java 1.1 Java基础 对抽象、继承、多态的理解 泛型的作用及使用场景 枚举的特点及使用场景 线程sl...

  • Java枚举总结

    Java枚举总结 枚举类型比较简单,下面两个文章讲的比较清楚: Java 枚举(enum) 详解7种常见的用法 深...

网友评论

      本文标题:java枚举的理解

      本文链接:https://www.haomeiwen.com/subject/ojcswqtx.html