精华内容
下载资源
问答
  • Enum枚举类型Enum的全写是Enumeration,这个词的翻译是列举、逐条陈述、细目。在程序语言中,枚举类型是一种特殊的数据类型(常用的数据类型比如字符串、整型),这种数据类型的变量值限定在固定的范围, 比如季节只有...

    Enum枚举类型

    Enum的全写是Enumeration,这个词的翻译是列举、逐条陈述、细目。在程序语言中,枚举类型是一种特殊的数据类型(常用的数据类型比如字符串、整型),这种数据类型的变量值限定在固定的范围, 比如季节只有春夏秋冬,月份是12个。

    Java中的枚举

    枚举前时代

    在Java语言中, 枚举类型从JDK1.5才开始提供。在这之前使用接口静态常量来实现相关功能(也可以是类静态常量),以季节为例:

    在不使用枚举类之前,一般使用接口静态常量实现。比如:

    public interface Season {

    public static final int SPRING = 1;

    public static final int SUMMER = 2;

    public static final int AUTUMN = 3;

    public static final int WINTER = 4;

    }

    使用JUnit使用测试如下:

    @Test

    public void noEnum() {

    int i = 1;

    Assert.assertTrue(Season.SPRING==i);

    }

    使用接口静态常量的方式比较难限定变量的范围,而且定义繁琐,功能也很有限,于是在Java 1.5 中定义了一个枚举类型:java.lang.Enum。

    Java枚举的定义

    类似类(class)和接口(interface)的定义,Java提供enum关键字用来定义枚举类,在IDEA中创建枚举类的菜单如下:

    b514454ef5277536659676b0ec085089.png

    同样定义一个季节的枚举类, 代码可以简洁如下:

    package cn.osxm.jcodef.func.base;

    public enum SeasonEnum {

    SPRING, SUMMER, AUTUMN, WINTER

    }

    在枚举类中直接列出常量,常量遵循全部大写的规则。在上面的枚举类示例代码中,SPRING, SUMMER, AUTUMN, WINTER 是SeasonEnum的成员。

    枚举成员默认是final、public、static (所以可以使用SeasonEnum.SPRING方式调用枚举成员)

    每一个枚举类型成员都可以看作是枚举类的实例 (SeasonEnum.SPRING的类型也是SeasonEnum)

    在JUnit使用测试如下:

    @Test

    public void enumBase() {

    SeasonEnum season = SeasonEnum.SPRING;

    Assert.assertTrue(season.equals(SeasonEnum.SPRING));

    }

    Java 枚举类的特性

    Java枚举类的特性有:

    枚举可以实现接口,但不能继承接口,也不能被继承。

    枚举类是final的,所以不能继承。

    枚举类的构造方法是私有的

    枚举成员是静态、final和public

    枚举成员是枚举类的实例

    但是从上面SeasonEnum枚举类的定义来看,完全看不出这些特性,这些特性是怎么来的呢? 请看下面的原理探求。

    Java枚举类实现的原理探求

    Java枚举类型的奥秘就在编译阶段,枚举类在编译后会生成了一个扩展java.lang.Enum的类。这个可以通过JDK自带的javap工具来反编译生成的.class文件。对上面的生成的SeasonEnum.class文件进行反编译,因为这个文件的包路径是cn\osxm\jcodef\func\base,所以在命令行使用如下命令:

    javap -p cn\osxm\jcodef\func\base\SeasonEnum.class

    ·-p参数的意思是反编译代码中包含私有的方法, p是private的意思。

    c5e667d2c3089a5719d1ab5a487e1c7c.png

    从控制台输出的反编译后的源码可以看出:

    ·自定义的枚举类会自动继承java.lang.Enum类

    ·每个成员变量都会被转换为 private static final的枚举类型的实例

    ·自动添加private的构造函数 从反编译后的源码就不难理解Enum的特性了。

    注意: 使用专门的Java反编译工具,比如JD GUI、luyten等对Eumn进行反编译的效果接近源码的效果,无法看到继承等特性,JD-GUI反编译的效果和源码时一致的,这也说明使用JD GUI来进行实际的反编译还是不错的。

    猜你喜欢:

    展开全文
  • Java枚举类型enum的详解及使用最近跟同事讨论问题的时候,突然同事提到我们为什么Java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum...

    Java枚举类型enum的详解及使用

    最近跟同事讨论问题的时候,突然同事提到我们为什么Java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义。既然不明白就抽时间研究下吧。

    Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。要了解枚举类型,建议大家先打开jdk 中的Enum 类简单读一下,这个类里面定义了很多protected 方法,比如构造函数,如果要使用这些方法我们可以把枚举类型定义到当前类中。每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参考下面的例子。

    一、   通常定义常量方法

    我们通常利用public final static 方法定义的代码如下,分别用1 表示红灯,3 表示绿灯,2 表示黄灯。

    package com.csdn.myEnum;

    public class Light {

    /* 红灯 */

    public final static int RED =1;

    /* 绿灯 */

    public final static int GREEN =3;

    /* 黄灯 */

    public final static int YELLOW =2;

    }

    二、   枚举类型定义常量方法

    枚举类型的简单定义方法如下,我们似乎没办法定义每个枚举类型的值。比如我们定义红灯、绿灯和黄灯的代码可能如下:

    public enum Light {

    RED , GREEN , YELLOW ;

    }

    我们只能够表示出红灯、绿灯和黄灯,但是具体的值我们没办法表示出来。别急,既然枚举类型提供了构造函数,我们可以通过构造函数和覆写toString 方法来实现。首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下:

    public enum Light {

    // 利用构造函数传参

    RED (1), GREEN (3), YELLOW (2);

    // 定义私有变量

    private int nCode ;

    // 构造函数,枚举类型只能为私有

    private Light( int _nCode) {

    this . nCode = _nCode;

    }

    @Override

    public String toString() {

    return String.valueOf ( this . nCode );

    }

    }

    三、   完整示例代码

    枚举类型的完整演示代码如下:

    package com.csdn.myEnum;

    import java.util.EnumMap;

    import java.util.EnumSet;

    public class LightTest {

    // 1. 定义枚举类型

    public enum Light {

    // 利用构造函数传参

    RED (1), GREEN (3), YELLOW (2);

    // 定义私有变量

    private int nCode ;

    // 构造函数,枚举类型只能为私有

    private Light( int _nCode) {

    this . nCode = _nCode;

    }

    @Override

    public String toString() {

    return String.valueOf ( this . nCode );

    }

    }

    /**

    * @param args

    */

    public static void main(String[] args ) {

    // 1. 遍历枚举类型

    System. out .println( " 演示枚举类型的遍历 ......" );

    testTraversalEnum ();

    // 2. 演示 EnumMap 对象的使用

    System. out .println( " 演示 EnmuMap 对象的使用和遍历 ....." );

    testEnumMap ();

    // 3. 演示 EnmuSet 的使用

    System. out .println( " 演示 EnmuSet 对象的使用和遍历 ....." );

    testEnumSet ();

    }

    /**

    * 演示枚举类型的遍历

    */

    private static void testTraversalEnum() {

    Light[] allLight = Light.values ();

    for (Light aLight : allLight) {

    System. out .println( " 当前灯 name : " + aLight.name());

    System. out .println( " 当前灯 ordinal : " + aLight.ordinal());

    System. out .println( " 当前灯: " + aLight);

    }

    }

    /**

    * 演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不过 key 要是枚举类型

    */

    private static void testEnumMap() {

    // 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是key 的类的类型

    EnumMap currEnumMap = new EnumMap(

    Light. class );

    currEnumMap.put(Light. RED , " 红灯 " );

    currEnumMap.put(Light. GREEN , " 绿灯 " );

    currEnumMap.put(Light. YELLOW , " 黄灯 " );

    // 2. 遍历对象

    for (Light aLight : Light.values ()) {

    System. out .println( "[key=" + aLight.name() + ",value="

    + currEnumMap.get(aLight) + "]" );

    }

    }

    /**

    * 演示 EnumSet 如何使用, EnumSet 是一个抽象类,获取一个类型的枚举类型内容

    * 可以使用 allOf 方法

    */

    private static void testEnumSet() {

    EnumSet currEnumSet = EnumSet.allOf (Light. class );

    for (Light aLightSetElement : currEnumSet) {

    System. out .println( " 当前 EnumSet 中数据为: " + aLightSetElement);

    }

    }

    }

    执行结果如下:

    演示枚举类型的遍历 ......

    当前灯 name : RED

    当前灯 ordinal : 0

    当前灯: 1

    当前灯 name : GREEN

    当前灯 ordinal : 1

    当前灯: 3

    当前灯 name : YELLOW

    当前灯 ordinal : 2

    当前灯: 2

    演示 EnmuMap 对象的使用和遍历 .....

    [key=RED,value= 红灯 ]

    [key=GREEN,value= 绿灯 ]

    [key=YELLOW,value= 黄灯 ]

    演示 EnmuSet 对象的使用和遍历 .....

    当前 EnumSet 中数据为: 1

    当前 EnumSet 中数据为: 3

    当前 EnumSet 中数据为: 2

    四、   通常定义常量方法和枚举定义常量方法区别

    以下内容可能有些无聊,但绝对值得一窥

    1.    代码:

    public class State {

    public static final int ON = 1;

    public static final Int OFF= 0;

    }

    有什么不好了,大家都这样用了很长时间了,没什么问题啊。

    首先,它不是类型安全的。你必须确保是int

    其次,你还要确保它的范围是0 和1

    最后,很多时候你打印出来的时候,你只看到 1 和0 ,

    但其没有看到代码的人并不知道你的企图,抛弃你所有旧的public static final 常量吧

    2.    可以创建一个enum 类,把它看做一个普通的类。除了它不能继承其他类了。(java 是单继承,它已经继承了Enum),

    可以添加其他方法,覆盖它本身的方法

    3.    switch() 参数可以使用enum 了

    4.    values() 方法是编译器插入到enum 定义中的static 方法,所以,当你将enum 实例向上转型为父类Enum是,values() 就不可访问了。解决办法:在Class 中有一个getEnumConstants() 方法,所以即便Enum 接口中没有values() 方法,我们仍然可以通过Class 对象取得所有的enum 实例

    5.    无法从enum 继承子类,如果需要扩展enum 中的元素,在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组。达到将枚举元素进行分组。

    6.    使用EnumSet 代替标志。enum 要求其成员都是唯一的,但是enum 中不能删除添加元素。

    7.    EnumMap 的key 是enum ,value 是任何其他Object 对象。

    8.    enum 允许程序员为eunm 实例编写方法。所以可以为每个enum 实例赋予各自不同的行为。

    9.    使用enum 的职责链(Chain of Responsibility) . 这个关系到设计模式的职责链模式。以多种不同的方法来解决一个问题。然后将他们链接在一起。当一个请求到来时,遍历这个链,直到链中的某个解决方案能够处理该请求。

    10.   使用enum 的状态机

    11.   使用enum 多路分发

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • Java中由关键字enum来定义一个枚举类型。我们可以使用枚举来取代用public final static修饰的一批相关数据。如我们定义红绿灯的颜色:public final static int RED = 1;public final static int GREEN = 2;public ...

    401faf4fa4d0ed328a71e86e500cefd2.png

    枚举类型是Java1.5的新特性,是指由一组固定的常量组成合法的类型。Java中由关键字enum来定义一个枚举类型。我们可以使用枚举来取代用public final static修饰的一批相关数据。如我们定义红绿灯的颜色:

    public final static int RED = 1;

    public final static int GREEN = 2;

    public final static int YELLOW = 3;

    当需要使用时,通过switch来获取值:

    public static String getValue(int color) {

    StringBuffer result = new StringBuffer();

    switch (color) {

    case RED:

    result.append("红灯");

    break;

    case GREEN:

    result.append("绿灯");

    break;

    case YELLOW:

    result.append("黄灯");

    break;

    default:

    result.append("颜色有误");

    break;

    }

    return result.toString();

    }

    调用方法时需要传入参数,但是却无法保证传入的数据是合法的。

    例如:System.out.println(getValue(RED));//正常

    System.out.println(getValue(6));//存在类型不安全问题,编译不报错,但是数据不合要求

    若使用枚举方式来代替,修改一下设置的方式就可以比较容易的获取到值:

    定义:

    public enum Color {

    RED("红灯"), GREEN("绿灯"), YELLOW("黄灯");

    private String value = "";

    private Color(String value) {

    this.value = value;

    }

    public String getValue() {

    return value;

    }

    }

    调用测试方法:

    public static void test(Color c){

    String val = c.getValue();

    System.out.println(val);

    }

    test(Color.RED);

    输出:红灯

    如何传入的值不是Color中的枚举值,则编译时就不通过。

    同时枚举还可以设置各种颜色的灯亮时对应的行动:

    在枚举中添加行动的抽象方法,并在枚举实例中实现:

    public enum Color {

    RED("红灯") {

    @Override

    public String action() {

    return "停";

    }

    }, GREEN("绿灯") {

    @Override

    public String action() {

    return "行";

    }

    }, YELLOW("黄灯") {

    @Override

    public String action() {

    return "等一等";

    }

    };

    private String value = "";

    private Color(String value) {

    this.value = value;

    }

    public String getValue() {

    return value;

    }

    //行动的抽象方法

    public abstract String action();

    }

    调用测试方法:

    public static void test(Color c){

    String val = c.getValue();

    String action = c.action();

    System.out.println(val);

    System.out.println(action);

    }

    test(Color.RED);

    输出结果:红灯

    综上所述,使用枚举可以传入参时进行规则校验,参数只能为Color中的三个枚举值,否则在编译阶段就不能通过,保证了程序类型的安全性。

    展开全文
  • java枚举类型enum使用最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum定义,...

    java枚举类型enum 的使用

    最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum 定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义。既然不明白就抽时间研究下吧。

    Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型。要了解枚举类型,建议大家先打开jdk 中的Enum类简单读一下,这个类里面定义了很多protected 方法,比如构造函数,如果要使用这些方法我们可以把枚举类型定义到当前类中。每个枚举类型,都有自己的名字和顺序,当我们输出一个枚举类型的时候,会输入枚举类型的name ,具体可以参考下面的例子。

    一、通常定义常量方法

    我们通常利用public final static 方法定义的代码如下,分别用1 表示红灯,3 表示绿灯,2 表示黄灯。

    packagecom.csdn.myEnum;

    publicclassLight {

    /* 红灯 */

    publicfinalstaticintRED=1;

    /* 绿灯 */

    publicfinalstaticintGREEN=3;

    /* 黄灯 */

    publicfinalstaticintYELLOW=2;

    }

    二、枚举类型定义常量方法

    枚举类型的简单定义方法如下,我们似乎没办法定义每个枚举类型的值。比如我们定义红灯、绿灯和黄灯的代码可能如下:

    publicenumLight {

    RED, GREEN, YELLOW;

    }

    我们只能够表示出红灯、绿灯和黄灯,但是具体的值我们没办法表示出来。别急,既然枚举类型提供了构造函数,我们可以通过构造函数和覆写toString方法来实现。首先给Light 枚举类型增加构造方法,然后每个枚举类型的值通过构造函数传入对应的参数,同时覆写toString 方法,在该方法中返回从构造函数中传入的参数,改造后的代码如下:

    publicenumLight {

    // 利用构造函数传参

    RED(1), GREEN(3), YELLOW(2);

    // 定义私有变量

    privateintnCode ;

    // 构造函数,枚举类型只能为私有

    privateLight( int_nCode) {

    this. nCode = _nCode;

    }

    @Override

    publicString toString() {

    returnString.valueOf ( this. nCode );

    }

    }

    三、完整示例代码

    枚举类型的完整演示代码如下:

    packagecom.csdn.myEnum;

    importjava.util.EnumMap;

    importjava.util.EnumSet;

    publicclassLightTest {

    // 1. 定义枚举类型

    publicenumLight {

    // 利用构造函数传参

    RED(1), GREEN(3), YELLOW(2);

    // 定义私有变量

    privateintnCode ;

    // 构造函数,枚举类型只能为私有

    privateLight( int_nCode) {

    this. nCode = _nCode;

    }

    @Override

    publicString toString() {

    returnString.valueOf ( this. nCode );

    }

    }

    /**

    * @paramargs

    */

    publicstaticvoidmain(String[] args ) {

    // 1. 遍历枚举类型

    System. out.println( " 演示枚举类型的遍历 ......" );

    testTraversalEnum ();

    // 2. 演示 EnumMap 对象的使用

    System. out.println( " 演示 EnmuMap 对象的使用和遍历 ....." );

    testEnumMap ();

    // 3. 演示 EnmuSet 的使用

    System. out.println( " 演示 EnmuSet 对象的使用和遍历 ....." );

    testEnumSet ();

    }

    /**

    * 演示枚举类型的遍历

    */

    privatestaticvoidtestTraversalEnum() {

    Light[] allLight = Light.values ();

    for(Light aLight : allLight) {

    System. out.println( " 当前灯 name : " + aLight.name());

    System. out.println( " 当前灯 ordinal : " + aLight.ordinal());

    System. out.println( " 当前灯: " + aLight);

    }

    }

    /**

    * 演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不过 key 要是枚举类型

    */

    privatestaticvoidtestEnumMap() {

    // 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是key 的类的类型

    EnumMap currEnumMap = newEnumMap(

    Light. class);

    currEnumMap.put(Light. RED, " 红灯 " );

    currEnumMap.put(Light. GREEN, " 绿灯 " );

    currEnumMap.put(Light. YELLOW, " 黄灯 " );

    // 2. 遍历对象

    for(Light aLight : Light.values ()) {

    System. out.println( "[key=" + aLight.name() + ",value="

    + currEnumMap.get(aLight) + "]" );

    }

    }

    /**

    * 演示 EnumSet 如何使用, EnumSet 是一个抽象类,获取一个类型的枚举类型内容

    * 可以使用 allOf 方法

    */

    privatestaticvoidtestEnumSet() {

    EnumSet currEnumSet = EnumSet.allOf (Light. class);

    for(Light aLightSetElement : currEnumSet) {

    System. out.println( " 当前 EnumSet 中数据为: " + aLightSetElement);

    }

    }

    }

    执行结果如下:

    演示枚举类型的遍历 ......

    当前灯 name : RED

    当前灯 ordinal : 0

    当前灯: 1

    当前灯 name : GREEN

    当前灯 ordinal : 1

    当前灯: 3

    当前灯 name : YELLOW

    当前灯 ordinal : 2

    当前灯: 2

    演示 EnmuMap 对象的使用和遍历 .....

    [key=RED,value= 红灯 ]

    [key=GREEN,value= 绿灯 ]

    [key=YELLOW,value= 黄灯 ]

    演示 EnmuSet 对象的使用和遍历 .....

    当前 EnumSet 中数据为: 1

    当前 EnumSet 中数据为: 3

    当前 EnumSet 中数据为: 2

    四、通常定义常量方法和枚举定义常量方法区别

    以下内容可能有些无聊,但绝对值得一窥

    1.    代码:

    public class State {

    public static final int ON = 1;

    public static final Int OFF= 0;

    }

    有什么不好了,大家都这样用了很长时间了,没什么问题啊。

    首先,它不是类型安全的。你必须确保是int

    其次,你还要确保它的范围是0 和1

    最后,很多时候你打印出来的时候,你只看到 1 和0 ,

    但其没有看到代码的人并不知道你的企图,抛弃你所有旧的public static final 常量吧

    2.    可以创建一个enum 类,把它看做一个普通的类。除了它不能继承其他类了。(java 是单继承,它已经继承了Enum),

    可以添加其他方法,覆盖它本身的方法

    3.    switch() 参数可以使用enum 了

    4.    values() 方法是编译器插入到enum 定义中的static 方法,所以,当你将enum 实例向上转型为父类Enum 是,values() 就不可访问了。解决办法:在Class 中有一个getEnumConstants() 方法,所以即便Enum 接口中没有values() 方法,我们仍然可以通过Class 对象取得所有的enum 实例

    5.    无法从enum 继承子类,如果需要扩展enum 中的元素,在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组。达到将枚举元素进行分组。

    6.    使用EnumSet 代替标志。enum 要求其成员都是唯一的,但是enum 中不能删除添加元素。

    7.    EnumMap 的key 是enum ,value 是任何其他Object 对象。

    8.    enum 允许程序员为eunm 实例编写方法。所以可以为每个enum 实例赋予各自不同的行为。

    9.    使用enum 的职责链(Chain of Responsibility) . 这个关系到设计模式的职责链模式。以多种不同的方法来解决一个问题。然后将他们链接在一起。当一个请求到来时,遍历这个链,直到链中的某个解决方案能够处理该请求。

    10.   使用enum 的状态机

    11.   使用enum 多路分发

    展开全文
  • 原文网址:http://iaiai.iteye.com/blog/18435531 背景在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量。之前我们通常利用public final static 方法定义的代码如下,分别用1 表示...
  • Enum枚举类型Enum的全写是Enumeration,这个词的翻译是列举、逐条陈述、细目。在程序语言中,枚举类型是一种特殊的数据类型(常用的数据类型比如字符串、整型),这种数据类型的变量值限定在固定的范围, 比如季节只有...
  • 什么是枚举枚举类型java 5新增特性的一部分,它是一种特殊的数据类型,它既是一种类又比类多了些特殊的约束,但也是这些特殊的约束造就了枚举类型的简洁性、安全性以及便捷性。为什么要使用枚举使用枚举会更加直观...
  • java 枚举类型 enum

    2021-02-28 12:41:18
    java SE5中添加了枚举类型,即enum关键字。在这之前,当你需要创建一个整形常量集时,但是这些枚举值并不会必然的将其自身的取值限制在这个常量集的范围之内,因此这样做的显得不安全,也不方便使用。现在有了enum...
  • java 枚举类型 Enum

    2021-02-12 09:17:26
    在现实社会中,有些类的实例对象是固定的。例如季节,只有春夏秋冬。如果你创建了一个season类,你当然有义务维护这个类的.../*** 枚举类的后缀建议为Enum枚举类型的实例对象建议全大写(这样做符合JAVA的规范)*/...
  • java枚举类型学习

    2021-03-09 20:03:21
    用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举。参考:java编程思想。Update:枚举可以当做数据字典来存储,通常只要一个字段即instance本身,toString()或者name()打印的string。枚举...
  • 枚举类型(enum)在Switch中的使用以及遍历枚举类型(enum)中的内容public class EnumDemo {//定义枚举类型enum Month {January, February, March, April, May, June, July,August,September,October,November,December...
  • 对于Enum还不了解的小伙伴,可以先预习《Java中的枚举类型Enum)详解》一文。 通过反编译,我们知道Java枚举类会在编译之后转化为一个继承了java .lang.Enum的类,而我们定义的每个枚举值都会在类的初始化阶段被...
  • Java 枚举类型 enum

    2021-03-06 17:15:00
    以下使用 JDK 版本为:1.8.0_121枚举类型的引入枚举类型Java 5 中增加的一个小特性,在此之前,实现枚举的方式为定义编译期常量形式。而代码中使用编译期常量的方式在理解性和安全性方面存在不足,单纯的常量数值...
  • 枚举类型Java 5中新增特性的一部分,它是一个特殊的class,这个class相当于final static修饰,不能被继承。所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。 在没有...
  • Java枚举(enum)

    2021-03-06 22:25:51
    Free Talk上学期上Java课时都没有听说过枚举的概念,这次偶然在JavaGuide博客中看到了,就想写... JavaGuide和廖雪峰简介Java枚举其实是指一种特殊的类,它一般用来表示一组常量。package shuang.kou.enumdemo.enum...
  • Java 枚举enum)的学习

    千次阅读 2021-02-26 19:08:37
    Java 枚举(enum)的学习枚举的定义在定义枚举类型时我们使用的关键字是enum,与class关键字类似,只不过前者是定义枚举类型,后者是定义类类型。枚举类型Day中分别定义了从周一到周日的值,这里要注意,值一般是大写...
  • 1. 关于Java Enum:学过C/C++等语言的人,应该都对Enum类型略知一二。Enum一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用”...
  • 我正在尝试在抽象类中创建一个抽象方法,该方法将我自己的Enum作为参数。但我也希望Enum是通用的。所以我宣布它是这样的:public abstract > void test(Enum command);在实现中,我已经知道了那个:public enum ...
  • 经常会遇到对某些固定的值、字典项的定义的需求,很多项目经常使用常量来定义,其实在jdk1.5就已经引入了枚举使用枚举可以更好的解决这类需求,本文主要记录枚举的优势以及经常在项目中使用方法。 知识点 ...
  • javaEnum枚举类型终于在j2se1.5出现了。之前觉得它只不过是鸡肋而已,可有可无。毕竟这么多年来,没有它,大家不都过得很好吗?今日看《Thinking in Java》4th edition,里面有一句话..."使用Enum枚举类型,可以将...
  • java枚举enum equal与==

    2021-02-12 13:42:53
    原文链接:https://www.cnblogs.com/xiohao/p/7405423.html问题我知道Java枚举会被编译成一个包含私有构造参数和一堆静态方法的类,当去比较两个枚举的时候,总是使用equals()方法,例如:publicuseEnums(SomeEnum a)...
  • JDK1.5引入了新的类型——枚举。...现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法用法二:switchJDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,...
  • 为了可以更好的支持枚举类型java.util当中添加了2个新类,一个是EnumMap另外一个就是EnumSet,使用他们的话能够更加高效的操作枚举类型,那么下面的我们就来先讲一下EnumMap。EnumMap类EnumMap是专门为枚举类型量...
  • /*** @author dencycheng* @date 2019/11/14 11:37*/public enum Roles {ADMIN(1,"超级管理员"),GROUP_ADMIN(2,"集团管理员"),SCHOOL_ADMIN(3,"分校管理员"),BUSINESS_ADMIN(4,"业务管理员"),SCHO...
  • 理解java枚举类型

    2021-02-12 09:33:02
    下面就是一个典型枚举类型的定义:public enumColor{RED,BLUE,BLACK,YELLOW,GREEN}显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。而这些类都是类库中Enum类的子类(java.lang.Enum)。它们继承了这...
  • 文章目录前言一、枚举类型定义二、访问成员三、遍历四、在switch()中使用枚举五、方法1.内置方法1.1 ordinal()用于返回成员的索引1.2 compareTo()用于比较枚举类型中两个成员的索引值1.3 valueOf()用于返回枚举...
  • I have two sets of enumerations, Foo and Bar, defined like so: public class EnumTest { public enum Foo { A(Bar.Alpha), B(Bar.Delta), C(Bar.Alpha); private Foo(Bar b) { this.b = b; } public final Bar ...
  • 枚举类型enum用法 我是Java枚举的忠实拥护者。 似乎我们一直在等待获得它,但是当我们最终获得它( J2SE 5 )时,该枚举比C和C ++提供的枚举要好得多,在我看来,“值得等待” 。 与Java enum一样好,它也不是没有问题...
  • 枚举的定义//枚举类型,使用关键字enumenum Day {MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY, SATURDAY, SUNDAY}枚举的引用public class EnumDemo {public static void main(String[] ...}}//定义枚举类型enum...
  • Java枚举用法实例

    2021-02-26 11:28:50
    /*** 活动枚举类型* @author QiXuan.Chen*/public enum EventStatus {/*** 未发布。*/DRAFT("DRAFT", "未发布"),/*** 已发布。*/PUBLISHED("PUBLISHED", "已发布");/*** 活动状态的值。*/private String value;/*...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,439
精华内容 27,775
关键字:

java枚举类型enum用法

java 订阅
友情链接: pingmu.rar