专栏首页网络技术联盟站JAVA基础 | 谈一谈枚举

JAVA基础 | 谈一谈枚举

枚举:

●类的对象只有有限个,确定的。举例如下:

  • 星期: Monday(星期- ) … Sunday(星期天)
  • 性别: Man(男)、 Woman(女)
  • 季节: Spring(春 节..inter(冬天)
  • 支付方式: Cash (现金)、WeChatPay (微信)、Alipay(支付宝)、 BankCard(银行卡)、CreditCard(信用卡)
  • 就职状态: Busy、Free、Vocation、 Dimission
  • 订单状态: Nonpayment (未付款)、Paid (已付款)、Delivered (已发货)、 Return (退货)、Checked (已确认) Fulilled (已配货)、
  • 线程状态:创建、就绪、运行、阻塞、死亡 ●当需要定义一组常量时,强烈建议使用枚举类

●枚举类的实现

  • JDK1.5之前需要自定义枚举类
  • JDK 1.5新增的enum关键字用于定义枚举类 ●若枚举只有一一个对象,则可以作为-种单例模式的实现方式。 ●枚举类的属性
  • 枚举类对象的属性不应允许被改动,所以应该使用privatefinal修饰
  • 枚举类的使用privatefinal修饰的属性应该在构造器中为其赋值
  • 若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数
自定义枚举类:

1.私有化类的构造器,保证不能在类的外部创建其对象 2.在类的内部创建枚举类的实例。声明为: public static final 3.对象如果有实例变量,应该声明为privatefinal,并在构造器中初始化

class Season{private final String SEASONNAME;//季节的名称private final String SEASONDESC;/ /季节的描述private Season(StringseasonName , String seasonDesc){this. SEASONNAME = seasonName;this . SEASONDESC = seasonDesc;}public static final Season SPRING = new Season("春天","春暖花开");public static final Season SUMMER = new Season("夏天","夏日炎炎");public static final Season AUTUMN = new Season( "秋天",“秋高气爽");public static final Season WINTER = new Season("冬天",“白雪皑皑");}
使用enum定义枚举类:

●使用说明

  • 使用enum定义的枚举类默认继承了java.langEnum类,因此不能再继承其他类
  • 枚举类的构造器只能使用private权限修饰符
  • 枚举类的所有实例必须在枚举类中显式列出(,分隔结尾)。列出的实例系统会自动添加publicstaticfinal修饰
  • 必须在枚举类的第一- 行声明枚举类对象 ●JDK1.5中可以在switch表达式中使用Enum定义的枚举类的对象作为表达式,case子句可以直接使用枚举值的名字,无需添加枚举类作为限定。
public enum SeasonEnum {    SPRING("春天" ,"春风又绿江南岸"),    SUMMER( "夏天" ,"映日荷花别样红”),    AUTUMN( "秋天","秋水共长天-色"),    WINTER("冬天" , "窗含西岭千秋雪");    private final String seasonName ;    private final String seasonDesc;    private SeasonEnum(String seasonName, string seasonDesc) {        this. seasonName = seasonName;        this . seasonDesc = seasonDesc;    }    public String getSeasonName() {        return seasonName;    }    public String getSeasonDesc() {        return seasonDesc;    }}

●Enum类的主要方法:

  • values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
  • valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:llegalArgumentException。
  • toString():返回当前枚举类对象常量的名称

推荐阅读

1. JAVA基础 | java基础7(字符串)

2. JAVA基础 | java基础6(IO)

本文分享自微信公众号 - 网络技术联盟站(it666lmz)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基础知识点面试手册(基础知识+集合)

    如果再深究一点呢,我们可以看看上面测试类的输出结果,或许对多态会有更深层次的认识。猜一猜上面 的结果是什么。

    Java3y
  • Spring整合Mybaits java.sql.SQLException: Access denied for user '***'@'localhost' (using password: YES

    最近在搞Spring和Mybatis的整合,当我们在Spring里面配置数据源,而数据源是从外部的properties文件读取过来的时候就会报错

    Arebirth
  • JDK13 GA发布:5大特性解读

    350: Dynamic CDS Archives351: ZGC: Uncommit Unused Memory353: Reimplement the Le...

    zhisheng
  • 浏览器关闭后Session真的消失了吗?

    当用户第一次访问服务器web应用程序中支持session的某个程序的时候,客户端(浏览器)的请求头cookie属性中没有JSESSIONID...

    Arebirth
  • Java-Servlet请求方式doXXX、service 具体分析

    说起Servlet的接收处理请求的方式,想必各位都并不陌生,如doGet、doPost、service...

    Arebirth
  • 神奇的Java僵尸(defunct)进程问题排查过程

    原文链接:https://www.jianshu.com/u/21add3dce532

    用户1516716
  • java 代理模式-静态代理与动态代理

        举个例子吧:我们生活中的租房问题。假如我们去租个房子,我们大多数情况下是不会知道房主(就是真正租房,一手货源)的,我们是不是都是先去某些租房平台,或者去...

    Arebirth
  • 并发编程的三个核心总结

    上一篇文章这次走进并发的世界,请不要错过 给大家带了并发编程的开胃菜,接下来我们逐步上正餐,在吃正餐之前,我还要引用那首诗词: 「横看成岭侧成峰,远近高低各不同...

    用户1516716
  • java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap报错解决

    commons-beanutils-1.9.2.jar commons-logging-1.1.1.jar

    Arebirth
  • 降低软件复杂性的一般原则和方法

    本文是作者阅读John Ousterhout的《A Philosophy of Software Design》之后,结合自己的工作经验,对“降低复杂性”做了详...

    美团技术团队

扫码关注云+社区

领取腾讯云代金券