zoukankan      html  css  js  c++  java
  • Java Enum

    java1.5+引入Enum,这样就可以将一类有共性的定义,放在一起,也容易被调用。不用在CommonConstants中定义public static final *****

    不过Enum编译后的文本也是public static final *****这种形式。

    个人的理解:Enum中定义的常量有点像定义的类,Enum的类名就如同类的集合一样,不带参数时,就如同默认的不带参的构造器一样。

          带参时,就需要带参构造器。因枚举是一种常量定义,因此需要全大写。

    public enum FruitEnum {
        APPLE, PEAR, ORANGE, GRAPE;
        // 可写可不写,默认的
        private FruitEnum() {
        }
    }

    带参的形式:

    public enum FruitEnum {
        APPLE("苹果", "西安"), PEAR("梨子", "山西"), ORANGE("橘子", "广元"), GRAPE("葡萄", "吐鲁番");
        /** 水果名字 **/
        private String fruitName;
        /** 产地 **/
        private String place;
        // 带参时必须写
        private FruitEnum(String fruitName,String place) {
            this.fruitName = fruitName;
            this.place = place;
        }
        
        public String getFruitName() {
            return fruitName;
        }
        public void setFruitName(String fruitName) {
            this.fruitName = fruitName;
        }
        public String getPlace() {
            return place;
        }
        public void setPlace(String place) {
            this.place = place;
        }
        
    }

     调用方法:

    System.out.println(FruitEnum.GRAPE.getFruitName());
    System.out.println(FruitEnum.GRAPE.getPlace());

     实际编译后的文本:

      因反编译软件无法看到内部的参数结构,只能通过点击class看结构,从这个结构可以看出每个常量实际都是重新new FruitEnum。

         34  new FruitEnum [1]
         37  dup
         38  ldc <String "ORANGE"> [36]
         40  iconst_2
         41  ldc <String "橘子"> [37]
         43  ldc <String "广元"> [39]

    但是在switch调用内部内容时报出 case expressions must be constant expressions:错误无法编译通过 

    要求switch的内容必须是final才可以。因此只能调用枚举。可以通过switch的内容先反找到枚举,再进行case..when。

  • 相关阅读:
    探索javascript----事件对象下的各种X和Y
    css2----兼容----ie67的3像素bug
    探索javascript----拖拽
    一、Rabbitmq安装与配置信息
    四、RABBITMQ特点
    一,activemq安装和配置相关信息
    三,activemq持久化消息到mysql数据库中
    三、RABBITMQ的几个基本概念
    二、JMS和AMQP的对比
    hibernate的工作原理
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/8397477.html
Copyright © 2011-2022 走看看