jdk1.5新特性5之枚举之枚举类型的应用

 

一 简单应用

package cn.xy.Enum;

public enum TrafficLamp
{
 RED,GREEN,YELLOW;
}

TrafficLamp red = TrafficLamp.RED;
System.out.println(red);
System.out.println(red.name());
System.out.println(red.ordinal());
System.out.println(TrafficLamp.valueOf("YELLOW"));
TrafficLamp[] ts = TrafficLamp.values();
for (TrafficLamp t : ts)
{
 System.out.println(t.name());
}

 

结果

RED
RED
0
YELLOW
RED
GREEN
YELLOW

 

 

二 复杂应用

package cn.xy.Enum;

public enum TrafficLampComplex
{

 // 元素列表必须放在枚举类的最上面
 RED(10)
 {
  @Override
  public TrafficLampComplex nextLamp()
  {
   return GREEN;
  }

  @Override
  public String getValue()
  {
   return "红灯,时长" + this.getTime();
  }
 },
 GREEN(10)
 {
  @Override
  public TrafficLampComplex nextLamp()
  {
   return YELLOW;
  }

  @Override
  public String getValue()
  {
   return "绿灯,时长" + this.getTime();
  }
 },
 YELLOW(5)
 {
  @Override
  public TrafficLampComplex nextLamp()
  {
   return YELLOW;
  }

  @Override
  public String getValue()
  {
   return "黄灯,时长" + this.getTime();
  }
 };

 /**
  * 时长
  */
 private int time;

 TrafficLampComplex()
 {
 }

 TrafficLampComplex(int time)
 {
  this.time = time;
 }

 /**
  * 下一个灯
  * @return
  */
 public abstract TrafficLampComplex nextLamp();

 /**
  * 取值
  * @return
  */
 public abstract String getValue();

 public int getTime()
 {
  return time;
 }

 public void setTime(int time)
 {
  this.time = time;
 }

}

TrafficLampComplex tcRed = TrafficLampComplex.RED;
System.out.println(tcRed.nextLamp());
System.out.println(tcRed.getValue());

 

结果

GREEN
红灯,时长10

 

 

三 提示

如果理解该例子有困难,请参看本博客的《jdk1.5新特性5之枚举之模拟枚举类型》

 

 

时间: 2024-10-17 09:47:30

jdk1.5新特性5之枚举之枚举类型的应用的相关文章

JDK1.5新特性一览

"JDK1.5"(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 .使用这些特性有助于我们编写更加清晰,精悍,安全的代码. 下面我们简单介绍一下这些新特性. 1.泛型(Generic) C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能.一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换.猛虎引入了泛型,它允许指

JDK1.5新特性介绍

"JDK1.5"(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 .使用这些特性有助于我们编写更加清晰,精悍,安全的代码. 下面我们简单介绍一下这些新特性. 1.泛型(Generic) C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能.一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换.猛虎引入了泛型,它允许指

C# 3.0新特性初步研究 Part4:使用集合类型初始化器

集合 集合类型初始化器(Collection Initializers) 想看一段"奇怪"的代码: 1class Program 2    { 3        static void Main(string[] args) 4        { 5            var a = new Point { x = 10, y = 13 }; 6            var b = new Point { x = 33, y = 66 }; 7 8            var

jdk1.5新特性5之枚举之模拟枚举类型

  模拟方式一   package cn.xy.Enum; public class TrafficLampEasy {  private int time;  public final static TrafficLampEasy REDLAMP = new TrafficLampEasy(20);  public final static TrafficLampEasy GREENLAMP = new TrafficLampEasy(20);  public final static Tra

jdk1.5新特性1之静态导入

调用Math类的静态方法,每次都要写Math点方法. public static void main(String args) {  system.out.print(Math.max(3,6));  system.out.print(Math.min(3.6)); }   JDK1.5支持静态导入 import static java.lang.Math.max; public static void main(String args) {  system.out.print(max(3,6)

jdk1.5新特性2之动态参数列表

一 概念   Java类型后面三个点如(String... strs)是从Java1.5开始对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟三个点,表示此处接受的参数为0到多个Object类型的对象或者是一个Object[].       二 例子   public class test {  public static void main(String[] args)  {   testVarchar("xy", "xy2", "xy3&

jdk1.5新特性4之自动装箱和自动拆箱与享元模式

  一 基本概念 1 装箱 把基本类型用它们相应的引用类型包装起来,使其具有对象的性质.如int-->Integer,float-->Float. 自动装箱 Integer a = 100,编译器调用的是static Integer valueOf(int i)                2 拆箱 和装箱相反,将引用类型的对象简化成值类型的数据 自动拆箱 int b = new Integer(100); int c = a +2;   二 是否相等 例一 Integer a = new

jdk1.5新特性3之加强for循环

像C#中的foreach一样 List<String> lst = new ArrayList<String>(); lst.add("aaa"); lst.add("bbb"); lst.add("ccc"); // 普通循环 for(int i = 0; i < lst.size(); i++) {  system.out.print(lst.get(i)); } // 加强版 for(String s : ls

C#3.0新特性(一)-隐式类型的局部变量和数组

写在前边: 用了aspdotnet一段时间了,对csharp还知之甚少,今天就从csharp的基本语法开始学习.内容多为前辈同仁们blog中已写过,加上自己得理解,只求能加深自己的印象,若能在cnblog中凑个数,那真是受宠若惊! 一.C# 3.0语言主要增强点 • 隐含类型局部变量 • 扩展方法 • 对象与集合初始化器 • 匿名类型 • Lambda表达式 • 查询表达式( LINQ ) • 表达式树 二.隐式类型的局部变量和数组 先来看看例句: var i = 5; var h = 23.5