详解java枚举用法及实例

所属分类: 软件编程 / java 阅读数: 41
收藏 0 赞 0 分享

一、枚举类型作为常量

package myenum; 
/** 
 * @author zzl 
 * 简单的枚举作为常量 
 */ 
public enum Color { 
  GREEN,RED,YELLOW; 
  public static void main(String[] args) { 
    for (Color c : values()) { 
      System.out.println("color:"+c); 
    } 
  } 
} 
//输出 
/** 
color:GREEN 
color:RED 
color:YELLOW 
*/ 

其实在更近一步的话我们可以输出每个枚举实例的具体位置

package myenum; 
/** 
 * @author zzl 
 * 简单的枚举作为常量 
 */ 
public enum Color { 
  GREEN,RED,YELLOW; 
  public static void main(String[] args) { 
    for (Color c : values()) { 
      System.out.println(c + " position "+c.ordinal()); 
    } 
  } 
} 
//输出结果 
/** 
GREEN position 0 
RED position 1 
YELLOW position 2 
*/  

二、与swith结合使用

public enum Color { 
  GREEN,RED,YELLOW; 
  public static void main(String[] args) { 
    Color c = RED; 
    switch (c) { 
    case RED: 
      System.out.println("红色"); 
      break; 
    case GREEN: 
      System.out.println("绿色"); 
      break; 
    case YELLOW: 
      System.out.println("黄色"); 
      break; 
    default: 
      break; 
    } 
  } 
} 
//输出 
/** 
红色 
*/ 

从上面的例子可以看出枚举的多态性,其实可以讲Color作为枚举的超类,其中的实例在运行时表现出多态。(如上面的输出结果为红色,下面的例子来验证这一特性。)

三、多态性(在Color中添加抽象方法)

public enum Color { 
  GREEN{ 
    void description(){ 
      System.out.println("绿灯行!"); 
    } 
  },RED{ 
    void description(){ 
      System.out.println("红灯停!"); 
    } 
  },YELLOW{ 
    void description(){ 
      System.out.println("黄灯亮了等一等!"); 
    } 
  };//如果枚举中有方法则左后一个实例以“;”结束 
  abstract void description(); 
  public static void main(String[] args) { 
    for (Color c : values()) { 
      c.description(); 
    } 
  } 
 
} 
<pre name="code" class="java">//输出 
/** 
绿灯行! 
红灯停! 
黄灯亮了等一等! 
*/ 

四、利用构造器为实例添加描述

public enum ColoStructure { 
  GREEN("绿色"),RED("红色"),YELLOW("黄色");//如果枚举中有方法则左后一个实例以“;”结束 
  public String description; 
  private ColoStructure(String des){ 
    this.description = des; 
  } 
  public static void main(String[] args) { 
    for (ColoStructure c : values()) { 
      System.out.println(c.description); 
    } 
  } 
} 
<pre name="code" class="java"><pre name="code" class="java">//输出 
/** 
绿色 
红色 
黄色 
*/ 

希望本文可以帮到有需要的朋友

更多精彩内容其他人还在看

Java concurrency之锁_动力节点Java学院整理

这篇文章主要为大家详细介绍了Java concurrency之锁的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java8新特性之StampedLock_动力节点Java学院整理

本文从synchronized、Lock到Java8新增的StampedLock进行对比分析,对Java8新特性之StampedLock相关知识感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

Java8新特性之lambda的作用_动力节点Java学院整理

我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值。现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作解开lambda最强作用的神秘面纱。
收藏 0 赞 0 分享

Java8新特性之Base64详解_动力节点Java学院整理

这篇文章主要为大家详细介绍了Java8新特性之Base64的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java8新特性之JavaFX 8_动力节点Java学院整理

这篇文章主要介绍了Java8新特性之JavaFX 8的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

将本地jar包安装进入maven仓库(实现方法)

下面小编就为大家带来一篇将本地jar包安装进入maven仓库(实现方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈Java finally语句到底是在return之前还是之后执行(必看篇)

下面小编就为大家带来一篇浅谈Java finally语句到底是在return之前还是之后执行(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

基于Java并发容器ConcurrentHashMap#put方法解析

下面小编就为大家带来一篇基于Java并发容器ConcurrentHashMap#put方法解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解Spring Boot Profiles 配置和使用

本篇文章主要介绍了详解Spring Boot Profiles 配置和使用,具有一定的参考价值,有兴趣的可以了解一下
收藏 0 赞 0 分享

详解Spring Boot 属性配置和使用

本篇文章主要介绍了详解Spring Boot 属性配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多