`
rensanning
  • 浏览: 3548047 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38136
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607280
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682270
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89325
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401824
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69685
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91693
社区版块
存档分类
最新评论

Java枚举类型Enum的用法

    博客分类:
  • Java
 
阅读更多
(1)定义
/*
 * 最基本的enum
 */
enum NumericEnums {
    ONE, TWO, THREE, FOUR, FIVE,
}

/*
 * 构造函数和自定义方法
 */
enum ConstructableEnums {
    ABC(10, "abc"), DEF(20, "def"), GHI(30, "ghi"), JKL(40, "jkl");
    final int num;
    final String name;

    //构造函数默认是private,也只能是private。其他的话会编译错误!
    ConstructableEnums(int _num, String _name) {
        this.num = _num;
        this.name = _name;
    }

    String getContent() {
        return String.format("num=[%d], name=[%s]", num, name);
    }
}

/*
 * 抽象方法和方法override
 */
enum EnumsWithMethod {
    MORNING("Good Morning") {
        @Override
        String hello(String yourName) {
            return greeting + ", " + yourName + ". zzz...";
        }
    },
    AFTERNOON("Good Afternoon") {
        @Override
        String hello(String yourName) {
            return greeting + ", " + yourName + ". tea or coffee ?";
        }

        @Override
        String getGreeting() {
            return super.getGreeting() + ", but sleepy...";
        }
    },
    EVENING("Good Evening") {
        @Override
        String hello(String yourName) {
            return greeting + ", " + yourName + ". sleep, sleep.";
        }
    };
    final String greeting;

    EnumsWithMethod(String _greeting) {
        this.greeting = _greeting;
    }

    abstract String hello(String yourName);

    String getGreeting() {
        return greeting;
    }
}

/*
 * 实现接口
 */
interface HelloInterface {
    public String sayHello(String yourName);
}

enum EnumWithInterface implements HelloInterface {
    ME_THEN_YOU("foo") {
        public String sayHello(String yourName) {
            return String.format("I'm %s, you're %s.", myName, yourName);
        }
    },
    YOU_THEN_ME("bar") {
        public String sayHello(String yourName) {
            return String.format("You're %s, I'm %s.", yourName, myName);
        }
    };
    final String myName;

    EnumWithInterface(String _myName) {
        myName = _myName;
    }
}


(2)使用
// ----------------------------------------
System.out.println("printing NumericEnums.values():");
for (NumericEnums e : NumericEnums.values()) {
    System.out.print(e.toString() + "\t");
}//ONE	TWO	THREE	FOUR	FIVE
System.out.println();

NumericEnums o = NumericEnums.ONE;
if(o == NumericEnums.ONE){
  System.out.println("enum in java can be compared using ==");
}

System.out.println(NumericEnums.valueOf("ONE").equals(NumericEnums.ONE));//true
try {
	NumericEnums.valueOf("one");
} catch (IllegalArgumentException e) {
	System.out.println("one is not exist!");
}

NumericEnums one = NumericEnums.ONE;
switch(one) {
case ONE:
	System.out.println("ONE");
	break;
}

// ----------------------------------------
System.out.println("printing ConstructableEnums.values():");
for (ConstructableEnums e : ConstructableEnums.values()) {
	System.out.print(e.toString() + "\t");
}//ABC	DEF	GHI	JKL
System.out.println();
System.out.println(ConstructableEnums.valueOf("DEF").equals(ConstructableEnums.DEF));//true

System.out.println(ConstructableEnums.DEF.getContent());//num=[20], name=[def]

// ----------------------------------------
System.out.println(EnumsWithMethod.MORNING.hello("foo")); //Good Morning, foo. zzz...
System.out.println(EnumsWithMethod.AFTERNOON.hello("bar"));//Good Afternoon, bar. tea or coffee ?
System.out.println(EnumsWithMethod.EVENING.hello("baz"));//Good Evening, baz. sleep, sleep.
System.out.println(EnumsWithMethod.MORNING.getGreeting());//Good Morning
System.out.println(EnumsWithMethod.AFTERNOON.getGreeting());//Good Afternoon, but sleepy...
System.out.println(EnumsWithMethod.EVENING.getGreeting());//Good Evening

// ----------------------------------------
System.out.println(EnumWithInterface.ME_THEN_YOU.sayHello("abc"));//I'm foo, you're abc.
System.out.println(EnumWithInterface.YOU_THEN_ME.sayHello("def"));//You're def, I'm bar.

// EnumMap----------------------------------------
Map<NumericEnums, String> numerics = new EnumMap<NumericEnums, String>(NumericEnums.class);
numerics.put(NumericEnums.ONE, "one");
numerics.put(NumericEnums.TWO, "two");
numerics.put(NumericEnums.THREE, "three");
numerics.put(NumericEnums.FOUR, "four");
numerics.put(NumericEnums.FIVE, "five");

System.out.println(numerics.get(NumericEnums.FOUR));//four

// EnumSet----------------------------------------
Set<NumericEnums> s1 = EnumSet.of(NumericEnums.TWO, NumericEnums.THREE);
System.out.println(s1.contains(NumericEnums.TWO));//true
System.out.println(s1.contains(NumericEnums.FOUR));//false

Set<NumericEnums> s2 = EnumSet.noneOf(NumericEnums.class);
System.out.println(s2.size());//0

Set<NumericEnums> s3 = EnumSet.range(NumericEnums.TWO, NumericEnums.FOUR);
System.out.println(s3.contains(NumericEnums.ONE));//false
System.out.println(s3.contains(NumericEnums.TWO));//true
System.out.println(s3.contains(NumericEnums.THREE));//true
System.out.println(s3.contains(NumericEnums.FOUR));//true
System.out.println(s3.contains(NumericEnums.FIVE));//false

// int->Enum
System.out.println(NumericEnums.values()[0].equals(NumericEnums.ONE));//true

// String->Enum
System.out.println(NumericEnums.valueOf("ONE").equals(NumericEnums.ONE));//true

// Enum->int----------------------------------------
System.out.println(NumericEnums.ONE.ordinal());//0
System.out.println(NumericEnums.TWO.ordinal());//1
System.out.println(NumericEnums.THREE.ordinal());//2
System.out.println(NumericEnums.FOUR.ordinal());//3
System.out.println(NumericEnums.FIVE.ordinal());//4

// Enum->String----------------------------------------
System.out.println(NumericEnums.ONE.name());//ONE
System.out.println(NumericEnums.TWO.name());//TWO
System.out.println(NumericEnums.THREE.name());//THREE
System.out.println(NumericEnums.FOUR.name());//FOUR
System.out.println(NumericEnums.FIVE.name());//FIVE

System.out.println(NumericEnums.ONE.toString());//ONE
System.out.println(NumericEnums.TWO.toString());//TWO
System.out.println(NumericEnums.THREE.toString());//THREE
System.out.println(NumericEnums.FOUR.toString());//FOUR
System.out.println(NumericEnums.FIVE.toString());//FIVE
分享到:
评论
1 楼 SwordShadow 2014-02-11  
哎,当初很多都了解过,但是项目中没有使用,现在几乎都忘了

相关推荐

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

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

    java枚举类型enum的使用

    ### Java 枚举类型 enum 的使用详解 #### 一、枚举类型概述 在 Java 中,枚举(enum)是一种特殊的类,它被用来表示一组固定的常量值。枚举类型自 JDK 1.5 开始引入,为开发者提供了一种更加安全、简洁的方式来...

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

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

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

    总之,Java的枚举类型`Enum`不仅提供了对常量集的封装,还具备了类的所有功能,包括方法、构造函数和继承。它极大地增强了代码的可读性和安全性,是Java开发中的一个重要特性。通过深入理解和熟练应用,可以提高代码...

    Java枚举(enum)类型深度解析:特性、用法与最佳实践

    本文将深入探讨Java枚举类型的特点、用法以及最佳实践。 Java中的枚举类型是一种强大的特性,它提供了一种类型安全的方式来表示一组固定的常量。枚举类型可以包含字段、方法和构造器,使得它们可以携带额外的信息和...

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

    本文将对 Java 枚举类型 enum 进行详解,并介绍其使用方法。 一、枚举类型的定义 在 Java 中,枚举类型使用关键字 enum 定义。所有的枚举类型都是继承自 Enum 类型。枚举类型可以拥有自己的名字和顺序,每个枚举...

    java枚举类型说明

    本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举类型在Java中的引入标志着一种更为类型安全且灵活的编程方式。 #### 二、Java枚举的基本概念 Java中的枚举是一种特殊的类,用于定义...

    JAVA枚举类型的用法详解

    下面我们将深入探讨Java枚举类型的常见用法。 首先,枚举类型在本质上等同于定义了一组静态常量。创建枚举类型的语法如下: ```java public enum Belle { para1, para2, para3, para4; } ``` 这会创建一个名为`...

    java中enum枚举的详细用法

    尽管枚举类不能被继承,但每个枚举类型都隐式地继承了`java.lang.Enum`类,这意味着它们可以实现接口并提供具体实现。这使得枚举可以具有多态行为。 6. 枚举的序列化 默认情况下,枚举是可序列化的。如果不需要...

    深入谈谈java的枚举(enum)类型

    在本文中,我们将深入探讨Java枚举的使用和实现方式。 首先,枚举可以看作是一种预定义的类,与基本数据类型(如int、char)相似,但其主要目的是限制变量只能赋值为枚举类型中定义的特定值。以下是一个简单的枚举...

    简单总结java枚举类型

    Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...

    理解java枚举类型

    Java枚举类型是Java语言中的一种特殊的类,用于定义一组固定的常量集合。它在Java中扮演着重要的角色,提供了一种安全、类型化的常量表示方式,比传统的final static变量更具有优势。理解Java枚举类型对于编写高质量...

    Java枚举类型.pdf

    总结起来,Java枚举类型是一个强大的工具,它可以替代`static final`常量来表示一组固定的值,提供类型安全、易于维护的代码。通过枚举,我们可以更方便地管理常量,减少错误,并增加代码的灵活性。枚举是Java中一个...

    Java枚举(enum) 详解7种常见的用法

    Java中的枚举(enum)是自...总结来说,Java枚举提供了一种结构化、类型安全的方式来定义和使用常量,还支持方法定义、接口实现以及与`switch`语句的无缝集成。这些特性使得枚举成为编写可维护、可扩展代码的重要工具。

    JAVA枚举类型的用法.doc

    下面将详细介绍枚举类型的用法: 1. **定义枚举类型**: - 在Java中,枚举类型通过`enum`关键字来定义。例如: ```java public enum Color { RED, GREEN, BLUE } ``` - 这里,`Color`是一个枚举类型,`RED`,...

    全面解读Java中的枚举类型enum的使用

    Java中的枚举类型`enum`是一种特殊的类,用于表示有限集合的值,这些值在运行时是不可变的。枚举在Java中被设计为安全、类型化且易于使用,适用于那些固定、有限且不会改变的数据类型。在本文中,我们将深入探讨枚举...

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

    可以通过 `values()` 方法获取枚举类型的全部枚举常量,返回一个枚举类型的数组。 总结来说,Java 枚举提供了一种强类型、安全且易于使用的机制,用于表示一组固定数量的值。它简化了代码,提高了程序的可读性和可...

    Java中的Enum枚举用法.doc

    - 枚举类型自动继承自`java.lang.Enum`类,这意味着它们可以直接使用`Enum`类提供的方法,而无需显式地继承。 2. **枚举的好处:** - **安全性**:确保了变量只能赋值为预定义的一组值之一。 - **编译时检查**:...

    java枚举类用法

    Java枚举类型(enum)是Java语言中一种特殊的类,用于定义一组固定的常量。它在许多场景下作为替代常量或单例模式的选择,提供了更安全、更易读的代码。下面我们将深入探讨Java枚举类的用法及其优势。 1. **枚举的...

Global site tag (gtag.js) - Google Analytics