`

enum1

    博客分类:
  • java
阅读更多
public enum TestEnumMethod {
    //为每个enum实例添加不同的实现方法
    SAMPLE1 { //相当于该enum的一个实例
        String getInfo() {
            return "SAMPLE1";
        }
    },
    SAMPLE2{
        String getInfo()
        {
            return "SAMPLE2";
        }
    };
    abstract String getInfo();

    //测试
    public static void main(String args[])
    {
        for(TestEnumMethod method:values())
        {
            System.out.println(method.getInfo());
        }
    }

}

 

 

   

public class EnumTest {

    //定义一个enum枚举类型,包括两个实例ON,OFF
    public enum State {
        ON, OFF
    };

    //测试函数
    public static void main(String[] args) {
        //直接变量enum

        for (State s : State.values()) {
            System.out.println(s.name());  //ON OFF
        }

        //switch与enum的结合使用
        State switchState = State.OFF;
        switch (switchState) {
        case OFF:
            System.out.println("OFF");    //OFF
            break;
        case ON:
            System.out.println("ON");
            break;
        }

        //EnumSet的使用
        EnumSet stateSet = EnumSet.allOf(State.class);
        for (Object s : stateSet) {
            System.out.println(((State)s).name());    //ON OFF
        }

        //EnumMap的使用
        EnumMap stateMap = new EnumMap(
                State.class);
        stateMap.put(State.ON, "is On");
        stateMap.put(State.OFF, "is off");
        for (State s : State.values()) {
            System.out.println(s.name() + ":" + stateMap.get(s));
        }
    }

}

 1.
public class State {
  public static final int ON = 1;
  public static final Int OFF= 0;
}

有什么不好了,大家都这样用了很长时间了,没什么问题啊。
首先,它不是类型安全的。你必须确保是int
其次,你还要确保它的范围是0和1
最后,很多时候你打印出来的时候,你只看到 1 和0 ,

但其没有看到代码的人并不知道你的企图
so,抛弃你所有旧的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多路分发

分享到:
评论

相关推荐

    enumdisk1.exe

    用于枚举磁盘设备的 Enumdisk 示例

    hycBook#bk_python#13.枚举类Enum1

    案例简单枚举类定义由于枚举类的“new”方法,将会保证内存中只会存在一个枚举类的实例from enum import Enum这样我们就获得了Month类型的枚

    enum类型重定义解决方法

    在编程中,`enum`(枚举)类型是用来定义一组命名的整数常量,它在C++中被广泛使用。然而,在某些情况下,我们可能会遇到`enum`类型的重定义问题,这通常发生在包含不同库或者头文件时,因为这些库可能已经定义了...

    C++中枚举类型(enum)

    enum box { pencil = 1, pen = 2 }; ``` 在这个例子中,`pencil`的值被显式设置为1,而`pen`的值为2。如果只给某个枚举元素指定了值,那么下一个元素会自动采用前一个元素的值加1作为自己的值: ```cpp enum box {...

    mysql之set与enum的介绍

    当我们尝试插入超出`ENUM`范围的值时,`enum1`列没有显示任何值,而在`set1`列中,超出范围的值被解释为二进制值,导致了警告。 在实际应用中,`SET`类型适合于那些需要记录用户兴趣、产品类别等多选情况的场景,...

    enum 结构分析源码

    枚举(enum)在编程语言中是一种非常基础且重要的数据类型,它允许程序员定义一组预定义的常量,这些常量通常表示特定的值或状态。在这个“enum 结构分析源码”资源中,我们主要关注的是C语言中的枚举使用和实现。...

    Enum的用法

    1. **构造函数限制**:`Enum`不允许拥有公共(public)构造函数,这一设计确保了外部代码无法直接实例化`Enum`类型,从而维护了枚举值的不变性和安全性。 2. **枚举值的特殊属性**:每个枚举值都是`public`、`...

    enum类型被intent所携带时各种情况的示例代码

    1. **通过ordinal值传递**:每个enum实例都有一个唯一的ordinal值,从0开始递增。可以将enum的ordinal值作为一个int类型的数据传递给Intent,然后在接收端根据这个值还原enum。 ```java public enum MyEnum { ...

    Java枚举类型Enum的用法

    1. **枚举的声明与初始化** 枚举类型的声明方式类似于类,但以`enum`关键字开头。例如: ```java enum Color { RED, GREEN, BLUE } ``` 这里定义了一个名为`Color`的枚举类型,包含三个常量`RED`, `GREEN`, ...

    C++ 11 新特性 之 Enum Class

    C++ 11起引入的 enum class相对于传统的enum有了很多变化,主要是针对传统 enum 在编程过程中出现的值类型名称... // Defining enum1 Gender enum Gender { Male, Female }; // Defining enum2 Gender2 with same v

    Options:有时在某些情况下,您想在OptionSet中使用Enum或希望Enum由Raw的Int类型支持,但同时也具有String标签

    选项Swift软件包,用于更强大的Enum类型。 目录介绍特征安装用法设置一个MappedValueRepresentable枚举使用MappedValueCollectionRepresented 使用MappedEnum类型的可编码枚举在ESet中使用OptionSet中的EnumSet 将...

    Laravel开发-enum

    1. **什么是PHP枚举(Enums)?** PHP枚举是类型安全的数据结构,允许我们定义一组相关的常量,它们的值在运行时不可更改。枚举可以用于替代传统的常量定义,提高代码的结构和可读性。 2. **创建Laravel Enum** 在...

    Java enum的用法详解

    Java enum 的用法详解 Java enum(枚举)是一种特殊的数据类型,用于定义一组固定的常量。从 JDK 1.5 开始,Java 引入了 enum 机制,解决了传统的常量定义方式的不足。 用法一:常量 在 JDK 1.5 之前,我们定义...

    Laravel开发-laravel-enum

    ### 1. 安装与配置 首先,你需要通过Composer安装`spatie/laravel-enum`库: ```bash composer require spatie/laravel-enum ``` 接着,你可以通过服务提供者自动注册或手动注册该库。在`config/app.php`文件的`...

    java enum 枚举 学习资料

    1. 枚举语法 在 Java 中,枚举类型是用 enum 关键字来定义的。枚举元素列表必须写在枚举类的最前面,每个元素之间用逗号隔开,元素列表结束位置后若没有其他内容,则可以不写分号,否则必须要写。例如: ```java ...

    php-enum, PHP Enum实现灵感来自 SplEnum.zip

    php-enum, PHP Enum实现灵感来自 SplEnum PHP enum 实现来自 SplEnum 为什么?首先,SplEnum 并不集成到PHP中,你必须单独安装它。使用 enum 而不是类常量提供了以下优点:你可以键入提示: function setAction(Ac

    Python库 | enum-0.4.7.tar.gz

    1. `Enum`: 这是最基本的枚举类,用于创建具有唯一标识的命名常量。每个`Enum`成员都是唯一的,不可变的,且不可被实例化。通过继承`Enum`并定义成员,你可以创建自己的枚举类型。 2. `IntEnum`: 这是`Enum`的一个...

    枚举语句enum用法详解

    enum Colors { Red = 1, Green = 2, Blue = 3 } ``` 二、枚举与类型 枚举类型本质上是整数类型,可以是`byte`、`sbyte`、`short`、`ushort`、`int`、`uint`、`long`或`ulong`之一,但默认类型为`int`。如果需要...

    EnumHelper枚举操作类

    /// 范例:Enum1枚举有两个成员A=0,B=1,则传入"A"或"0"获取 Enum1.A 枚举类型 public static T GetInstance(string member) { return CommFun.ConvertTo(Enum.Parse(typeof(T), member, true)); } #endregion ...

    enum枚举的方法

    enum枚举的方法

Global site tag (gtag.js) - Google Analytics