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

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 应用详解

    NULL 博文链接:https://janeky.iteye.com/blog/463611

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

    介绍的是java中的枚举类型,对于枚举类型的相关知识,我们也介绍过不少方面的内容。希望本文能够给你带来帮助,下面来一起看看,有需要的可以参考借鉴。

    三分钟快速掌握Java中枚举(enum)

    enum的全称为enumeration, 是 JDK 1.5中引入的新特性,存放在 java....下面这篇文章是我在使用enum过程中的一些经验和总结,分享出来方便大家快速的掌握Java中枚举(enum),有需要的朋友们下面跟着小编来一起看看吧。

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

    主要介绍了Java枚举(enum) 详解7种常见的用法,具有一定的参考价值,有需要的可以了解一下。

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

    主要介绍了Java中的枚举类型enum的使用,开始之前先讲解了枚举的用处,然后还举了枚举在操作数据库时的实例,需要的朋友可以参考下

    java中的枚举类型

    讲述了java中的枚举类型的用法,深入枚举类型

    Java中怎样由枚举常量的ordinal值获得枚举常量对象

    Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方  enum Season { ...也是说,使用name()方法和valueOf(String)方法能够在枚举类型对象和字符串之间方便得转换。当然,假设valu

    Java枚举的七种常见用法总结(必看)

    下面小编就为大家带来一篇Java枚举的七种常见用法总结(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java中枚举类型的一种使用方式

    主要介绍了Java中枚举类型的一种使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    枚举类型的使用

    本代码是本人学习中一些笔记,希望对你有帮助!!

    enum枚举类的应用

    包含了关于枚举类的应用,以及枚举类和接口的组合应用,扩展映射关系。很有用的工具类。

    java中的枚举的几种用法

    现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。  Java代码  publicenumColor{ RED,GREEN,BLANK,YELLOW }  用法二:switch  JDK1.6之前的switch语句只支持...

    浅析Java编程中枚举类型的定义与使用

    主要介绍了Java编程中枚举类型的定义与使用,简单讲解了enum关键字与枚举类的用法,需要的朋友可以参考下

    java实现高效的枚举元素集合示例

    Set是Java集合类的重要组成部分,它用来存储不能重复的对象。枚举类型也要求其枚举元素各不相同。看起来枚举类型和集合是很相似的。然而枚举类型中的元素不能...EnumSet是专门为enum实现的集合类,本实例将演示其用法

    java中enum的用法

    主要介绍了java中enum的用法,包括了枚举类型的基本定义及用法分析,对于学习Java有着一定的学习与借鉴价值,需要的朋友可以参考下

    inum:Inum(整数的枚举类型)提供类似于Java-Enum的形式

    Inum(整数的枚举类型)提供类似于Java枚举的Enum。 Inum具有通过i18n进行本地化的功能。 安装 将此行添加到您的应用程序的Gemfile中: gem 'inum' 然后执行: $ bundle 或将其自己安装为: $ gem install ...

    Java实现高效的枚举元素集合

    Set是Java集合类的重要...使用EnumSet类的add()方法添加元素,使用EnumSet类的remove()方法删除元素,使用EnumSet类的complementOf()方法获取对象的全部,使用EnumSet类的range()方法获取指定范围的元素。  代码如下

    RubyEnum:ruby 的 java 风格枚举

    任何时候你有多种类型的对象,这些类型只是分类,而不是对象本身,你可以使用枚举。 例如,如果您过去有一个具有角色属性(admin、editor、viewer)的 User 类,您可以: a) 在数据库中存储一个整数,并在整个...

    mybatis中实现枚举自动转换方法详解

    在使用mybatis的时候经常会遇到枚举类型的转换,下面这篇文章主要给大家介绍了关于mybatis中实现枚举自动转换的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们...

Global site tag (gtag.js) - Google Analytics