`

Java中枚举enum

    博客分类:
  • Java
阅读更多
1. enum用于常量

在JDK1.5之前可以使用public static final来定义常量,现在可以使用enum,而且枚举提供了比常量更多的方法。
public enum Color{
    Red, White, Blue, Black
}
public class ColorTest{
    public static void main(String[] args){
        Color myColor = Color.Blue;
        System.out.println(myColor);
        System.out.println("----------------");
        for(Color color : Color.values()){
            System.out.println(color);
        }
    }
}
运行结果:
Blue
----------------
Red
White
Blue
Black


2. enum使用switch

enum使用switch,可以提高代码的可读性。
public class EnumTest{
    public static void doOp(OpConstant opConstant){
        switch (opConstant){
        case TURN_LEFT:
            System.out.println("向左转");
            break;
        case TURN_RIGHT:
            System.out.println("向右转");
            break;
        case SHOOT:
            System.out.println("射击");
            break;
        }
    }
    public static void main(String[] args){
        doOp(OpConstant.TURN_LEFT);
    }    
}
enum OpConstant{
    TURN_LEFT, TURN_RIGHT, SHOOT
}
运行结果:
向左转


3. enum中添加新方法

要想使用penny("hello"), nickel("world");样式的枚举,就要实现
1) value属性
2) value属性的构造方法
3) getValue()方法
public enum Coin{
    penny("hello"), nickel("world"), dime("welcome"), quarter("hello world");
    private String value;
    public String getValue(){
        return value;
        }
    Coin(String value){
        this.value = value;
    }
    public static void main(String[] args){
        Coin coin = Coin.quarter;
        System.out.println(coin.getValue());
    }
}
public class ShowEnum{
    public static void main(String[] args){
        enumCompareTo(OpConstant.valueOf(args[0]));
    }
    public static void enumCompareTo(OpConstant constant){
        System.out.println(constant);
        for(OpConstant c : OpConstant.values()){
            System.out.println(constant.compareTo(c));
        }
    }
}
运行输入参数:
TURN_RIGHT
运行结果:
TURN_RIGHT
1
0
-1

values()方法
ordinal()方法返回顺序
public class ShowEnum2{
    public static void main(String[] args){
        for(OpConstant c : OpConstant.values()){
            System.out.printf("%d, %s, %n", c.ordinal(), c);
        }
    }
}
运行结果:
0, TURN_LEFT, 
1, TURN_RIGHT, 
2, SHOOT,


4. enumSet示例

1. EnumSet的of()方法和complementOf()方法

import java.util.EnumSet;
import java.util.Iterator;
enum FontConstant{
    Plain, Bold, Italilc, Hello
}
public class EnumSetDemo{
    public static void main(String[] args){
        EnumSet<FontConstant> enumSet = EnumSet.of(FontConstant.Plain);
        showEnumSet(enumSet);
        System.out.println("-------");
        showEnumSet(EnumSet.complementOf(enumSet));
    }
    public static void showEnumSet(EnumSet<FontConstant> enumSet) {
        for(Iterator<FontConstant> iter = enumSet.iterator(); iter.hasNext();){
            System.out.println(iter.next());
        }
    }
}
运行结果:
Plain
-------
Bold
Italilc
Hello

2. EnumSet的noneOf()方法

import java.util.EnumSet;
import java.util.Iterator;
public class EnumSetDemo2{
    public static void main(String[] args){
        EnumSet<FontConstant> enumSet = EnumSet.noneOf(FontConstant.class);
        enumSet.add(FontConstant.Bold);
        enumSet.add(FontConstant.Italilc);
        showEnumSet(enumSet);
    }
    public static void showEnumSet(EnumSet<FontConstant> enumSet){
        for(Iterator<FontConstant> iter = enumSet.iterator(); iter.hasNext();){
            System.out.println(iter.next());
        }
    }
}
运行结果:
Bold
Italilc

3. EnumSet的copyOf()方法

import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
public class EnumSetDemo3{
    public static void main(String[] args){
        List<FontConstant> list = new ArrayList<FontConstant>();
        list.add(FontConstant.Bold);
        list.add(FontConstant.Italilc);
        list.add(FontConstant.Plain);
        showEnumSet(EnumSet.copyOf(list));
    }
    public static void showEnumSet(EnumSet<FontConstant> enumSet){
        for(Iterator<FontConstant> iter = enumSet.iterator(); iter.hasNext();){
            System.out.println(iter.next());
        }
    }
}
运行结果:
Plain
Bold
Italilc


5. enumMap示例

遍历的顺序和枚举的顺序一致。

import java.util.EnumMap;
import java.util.Map;
public class EnumMapDemo{
    public static void main(String[] args){
        Map<Action, String> map = new EnumMap<Action, String>(Action.class);
        map.put(Action.TURN_RIGHT, "向右转");
        map.put(Action.SHOOT, "射击");
        map.put(Action.TURN_LEFT, "向左转");
        for (Action action : Action.values()){
            System.out.println(map.get(action));
        }
    }
}
enum Action{
    TURN_LEFT, TURN_RIGHT, SHOOT;
}
运行结果:
向左转
向右转
射击


6. enum应用

枚举实际应用:控制权限。

public enum AccessRight{
    MANAGER, DEPARTMENT, EMPLOYEE;
}
public class AccessControl{
    public static boolean checkRight(AccessRight accessRight){
        if(accessRight == AccessRight.MANAGER){
            return true;
        }
        else if(accessRight == AccessRight.DEPARTMENT){
            return false;
        }
        return false;
    }
    public static void main(String[] args){
        AccessRight accessRight = AccessRight.valueOf("MANAGER");
        System.out.println(checkRight(accessRight));
    }
}
运行结果:
true


推荐博客:
https://blog.csdn.net/javazejian/article/details/71333103
分享到:
评论

相关推荐

    Java枚举类型Enum的用法

    Java枚举类型(Enum)是Java SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...

    Java SE程序 Enum枚举类

    Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...

    java enum 枚举 学习资料

    Java Enum 枚举学习资料是 Java 编程语言中的一种特殊类型,它主要用来实现一组固定的常量。 Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型...

    高阶Java-Java枚举类型 enum 应用详解

    本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用它们。 一、枚举的基本用法 1. 声明枚举类型: ```java public enum Color { RED, GREEN, BLUE } ``` 在这里,`Color`是枚举类型,`RED`, `...

    java枚举类型enum的使用

    在 Java 中,枚举(enum)是一种特殊的类,它被用来表示一组固定的常量值。枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来处理一组固定的数据集合。枚举中的每个元素都是该枚举类型的对象...

    java中enum枚举的详细用法

    Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...

    Java中的枚举类型Enum示例源代码

    Java枚举支持单例模式,因为每个枚举常量都是唯一的,不能通过`new`关键字实例化。此外,枚举类型的枚举常量可以按照声明顺序自然排序,这使得它们在处理有序数据时非常方便。 枚举类型还可以与其他集合框架结合...

    JAVA高级编程中Enum枚举

    在Java编程语言中,`Enum`(枚举)是一种特殊的类类型,用于定义固定的、预定义的常量集合。它们在程序设计中扮演着重要的角色,特别是在需要表示一组固定值时,如状态、颜色、星期等。本资源包提供了一些关于`Enum`...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...

    java枚举实例代码

    Java枚举(enum)是Java语言中的一种特殊数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中被引入,目的是为了更好地管理和使用常量,提高代码的可读性和安全性。在本实例代码中,...

    Java中的Enum的使用与分析

    ### Java中的Enum深入解析 #### 引言 在Java编程语言中,`Enum`是一种特殊的数据类型,用于处理一组固定的常量。它不仅提供了一种更安全、更灵活的方式来表示一组固定的选择,还包含了丰富的内置功能,使得枚举...

    Java中的Enum枚举用法.doc

    #### 二、Java枚举的基本概念 1. **什么是Java枚举?** - 枚举(`enum`)是Java中的一种特殊类,它只能包含固定数量的实例。 - 枚举中的每个元素都是该类型的实例,它们是类的成员,并且默认是静态和final的。 - ...

    java 中枚举类enum的values()方法的详解

    Java 中枚举类 enum 的 values() 方法详解 Java 中的枚举类 enum 是一种特殊的类,通过使用 enum 关键字来定义。枚举类 enum 中有一个特殊的方法,values(),这个方法可以将枚举类转换为一个枚举类型的数组。通过...

    java 枚举(enum) 详解(学习资料)

    Java 枚举(enum)是 Java 语言中的一个重要特性,自 Java 5 开始引入。枚举用于定义一组相关的常量,这些常量通常代表一个有限的、预定义的值集合。枚举类是一种特殊的类,它具有以下特点: 1. **枚举类的声明**:...

    全面掌握java枚举类型(enum-type)1

    Java 中使用关键字 enum 来定义一个枚举类型。例如: ```java public enum Season { SPRING, SUMMER, AUTUMN, WINTER; } ``` 特点 Java 定义枚举类型的语句很简约。它有以下特点: 1. 使用关键字 enum 2. 类型...

    说说Java中的枚举 转 可以了,够了 包括EnumSet(Map)

    这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据结构。 首先,枚举定义的基本语法是`public enum EnumName {constant1, constant2, ...}`。每个枚举常量都是`...

    java enum枚举教程学习资料

    Java枚举(enum)是Java语言提供的一种特殊的数据类型,用于定义一组有限的常量,这些常量在程序中作为固定的值使用。枚举在Java中是类的子类型,因此,它们具备类的一些特性,比如可以有方法、变量以及实现接口。...

    java中枚举的使用

    在Java编程语言中,枚举(Enumeration)是一种特殊的类,用于定义一组固定的常量。它在JDK 1.5及以后的版本中被引入,为开发者提供了更安全、更面向对象的方式来处理常量集合。枚举在Java中的使用不仅提高了代码的...

Global site tag (gtag.js) - Google Analytics