• 如果要定义一个枚举类:

    public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE};

    • 实际上,这个声明定义的类型是一个类,它刚好有4个实例,在此尽量不要构造新对象。
    • 因此,在比较两个枚举类型的值时,永远不需要调用equals,而直接使用“==”就可以了。
  • 如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器知识在构造枚举常量的时候被调用。下面是一个示例:
public enum Size
{
SMALL("S"), MEDIUM("M"), LARGE("L"),EXTRA_LARGE("XL"); private String abbreviation; private Size(String abbreviation) {this.abbreviation = abbreviation;}
public String getAbbrevation() {return abbrevation;}
}
  • 所有的枚举类型都是Enum类的子类。它们继承了这个类的许多方法,其中最有用的一个是toString,这个方法能够返回枚举常量名。例如,Size.SMALL.toString()将返回字符串"SMALL".

    toString的逆方法是静态方法valueOf。例如,语句:
Size s = Enum.valueOf(Size.class, "SMALL");

将s设置为Size.SMALL.

  • 每个枚举类型都有一个静态的value方法,它将返回一个包含全部枚举值的数组,而且该数组中的元素严格保持其在enum中声明的顺序,因此你可以在循环中使用values返回的数组。例如,如下调用:
Size[] values = Size.values();

返回包含元素Size.SMALL, Size.MEDIUM,Size.LARGE和Size.EXTRA_LARGE的数组。

  • ordinal方法返回enum声明中枚举常量的位置,位置从0开始计数。例如,Size.MEDIUM.ordinal()返回1.
  • 可以向enum中添加方法。如果打算定义自己的方法,那么必须在enum序列化的最后添加一个分号。同时,Java要求你必须先定义enum实例。如果在定义enum实例之前定义了任何方法或属性,那么在编译时就会得到错误。
  • enum中构造器与普通方法没有什么区别,因为有少许限制之外,enum就是普通的类。所以,我们可以使用enum做许多事情。
  • 一般将enum的构造器声明为private,但对于它的访问属性而言,并没有什么实质性的变化,因为(即使不声明为private)我们只能在enum定义的内部使用期构造器创建enum实例。一旦enum定义结束,编译器就不允许我们在使用其构造器来创建任何实例楽

【Java】 枚举类的更多相关文章

  1. Java枚举类在生产环境中的使用方式

    前言   Java枚举在项目中使用非常普遍,许多人在做项目时,一定会遇到要维护某些业务场景状态的时候,往往会定义一个常量类,然后添加业务场景相关的状态常量.但实际上,生产环境的项目中业务状态的定义大部 ...

  2. Java 枚举类

    如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...

  3. java 枚举类 enum 总结

    枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...

  4. java 枚举类小结 Enum

    好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧.说实话,枚举类确实能够给我们带来很大的方便. 说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构 ...

  5. java枚举类

    enum关键字用于定义枚举类,若枚举只有一个成员, 则可以作为一种单例模式的实现方式.   枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰. 枚举类的使用 priva ...

  6. 【JAVA】浅谈java枚举类

    一.什么情况下使用枚举类? 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便? 二.为什么不用静态常量来替代枚举类呢? public static final int SEASO ...

  7. Java枚举类enum

    枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...

  8. java枚举类(enum) 基础知识讲解

    枚举类是在java 5后新增的,可以用于封装常量,并且还可以为常量的使用提供一些方法. 定义枚举类的语法: public enum EnumName{ 成员1(A,B...),成员2(A,B...), ...

  9. Java枚举类使用

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  10. Java 枚举类详解

    1. 枚举类定义 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象,这种实例有限而且固定的类,在Java里被称为枚举类. 2. 早期实现枚举的方式 public static f ...

随机推荐

  1. matlab slice

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  2. PAT A1118 Birds in Forest (25 分)——并查集

    Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...

  3. JavaScript设计模式 - 订阅发布模式(观察者模式)

    var Event = (function() { var global = this, Event, _default = 'default'; Event = function() { var _ ...

  4. Oracle 把查询的多个字段赋值给多个变量

    select f1,f2,f3 into v1,v2,v3 from tab1

  5. Luogu4899 IOI2018 Werewolf 主席树、Kruskal重构树

    传送门 IOI强行交互可还行,我Luogu的代码要改很多才能交到UOJ去-- 发现问题是对边权做限制的连通块类问题,考虑\(Kruskal\)重构树进行解决. 对于图上的边\((u,v)(u<v ...

  6. React-使用react-redux

    react-redux可以方便在react中使用redux,我们就可以忘记subscribe,只需要记住reducer,action和dispatch就可以了.react-redux提供Provide ...

  7. Luogu P2473 [SCOI2008]奖励关

    比较恶心的概率(期望)+状压DP,想正推2H的我瑟瑟发抖 由于数据范围不大,因此我们可以直接状压每个宝物取或不取的情况,设\(f_{i,j}\)表示前\(i\)轮且宝物是否取过的状态为\(j\)时的方 ...

  8. PV原语操作详解

    from http://www.blogjava.net/wxqxs/archive/2009/05/10/277320.html PV原语通过操作信号量来处理进程间的同步与互斥的问题.其核心就是一段 ...

  9. python语言程序设计?

    1, 别说了,我还是有几分蛋疼的.女朋友..计算机..唉 2, 今天把那几个练习写完吧? 3, 这个注释有啥用最前面的?? 4, 我在学完python后必须学完C和C++并开始离散数学和线代高数等全复 ...

  10. [JSOI2016]病毒感染[dp]

    题意 有 \(n​\) 个村庄按标号排列,每个村庄有一个死亡速度 \(a_i​\) 表示每天死 \(a_i​\) 人(除非你治好这个村庄). 你从 1 号村庄出发,每天可以选择向相邻的村庄进发或者治愈 ...