JDK 1.5 特性使用实例4--Enum

原创 2004年10月10日 11:49:00
 

JDK 1.5中,Enum有两种类型,EnumSet EnumMap

 

实例1 . Demo.java

 

package maoxiang.examples.jdk15.Enum;

 

import java.util.EnumSet;

 

/**

* @author 毛翔

*

* EnumSet

* EnumMap

*

*/

public class Demo {

enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

public static void main(String[] args) {

Demo demo=new Demo();

demo.Test1();

}

 

public void Test1(){

 

for (Day d : EnumSet.range(Day.MONDAY, Day.FRIDAY))

System.out.println(d);

 

}

}

 

实例2. Card.java

 

package maoxiang.examples.jdk15.Enum;

 

import java.util.ArrayList;

import java.util.List;

 

/**

* @author 毛翔

*

*/

public class Card {

 

public enum Rank { DEUCE, THREE, FOUR, FIVE, SIX,

SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE }

 

public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }

 

private final Rank rank;

private final Suit suit;

private Card(Rank rank, Suit suit) {

this.rank = rank;

this.suit = suit;

}

 

public Rank rank() { return rank; }

public Suit suit() { return suit; }

public String toString() { return rank + " of " + suit; }

 

private static final List<Card> protoDeck = new ArrayList<Card>();

 

// Initialize prototype deck

static {

for (Suit suit : Suit.values())

for (Rank rank : Rank.values())

protoDeck.add(new Card(rank, suit));

}

 

public static ArrayList<Card> newDeck() {

return new ArrayList<Card>(protoDeck); // Return copy of prototype deck

}

}

 

实例3.Operation.java

package maoxiang.examples.jdk15.Enum;

 

public enum Operation {

PLUS   { double eval(double x, double y) { return x + y; } },

MINUS  { double eval(double x, double y) { return x - y; } },

TIMES  { double eval(double x, double y) { return x * y; } },

DIVIDE { double eval(double x, double y) { return x / y; } };

 

// Do arithmetic op represented by this constant

abstract double eval(double x, double y);

public static void main(String args[]) {

double x = Double.parseDouble(args[0]);

double y = Double.parseDouble(args[1]);

for (Operation op : Operation.values())

System.out.printf("%f %s %f = %f%n", x, op, y, op.eval(x, y));

}

 

}

 

实例4  Planet.java

 

package maoxiang.examples.jdk15.Enum;

 

/**

* @author 毛翔

*

*/

public enum Planet {

MERCURY (3.303e+23, 2.4397e6),

VENUS   (4.869e+24, 6.0518e6),

EARTH   (5.976e+24, 6.37814e6),

MARS

(6.421e+23, 3.3972e6),

JUPITER (1.9e+27,   7.1492e7),

SATURN  (5.688e+26, 6.0268e7),

URANUS  (8.686e+25, 2.5559e7),

NEPTUNE (1.024e+26, 2.4746e7),

PLUTO   (1.27e+22,  1.137e6);

 

private final double mass;   // in kilograms

private final double radius; // in meters

Planet(double mass, double radius) {

this.mass = mass;

this.radius = radius;

}

private double mass()   { return mass; }

private double radius() { return radius; }

 

// universal gravitational constant  (m3 kg-1 s-2)

public static final double G = 6.67300E-11;

 

double surfaceGravity() {

return G * mass / (radius * radius);

}

double surfaceWeight(double otherMass) {

return otherMass * surfaceGravity();

}

public static void main(String[] args) {

double earthWeight = Double.parseDouble(args[0]);

double mass = earthWeight/EARTH.surfaceGravity();

for (Planet p : Planet.values())

System.out.printf("Your weight on %s is %f%n",

p, p.surfaceWeight(mass));

}

 

}

 

 

 

jdk1.5之后的新特性

jdk1.5之后的新特性:       泛型       枚举       静态导入       自动拆箱装箱       增强for循环        可变参数...
  • u010918487
  • u010918487
  • 2015年09月20日 00:58
  • 570

JDK 1.5 特性使用实例3--AutoBoxing

package maoxiang.examples.jdk15; import java.util.AbstractList;import java.util.List;import java.uti...
  • maoxiang
  • maoxiang
  • 2004年10月10日 11:43
  • 1069

JDK 1.5 特性使用实例2--Varargs

 代码实例1。 Varargs.javaimport java.text.MessageFormat;import java.util.Date; /*** @author 毛翔*  * 当参数 为集...
  • maoxiang
  • maoxiang
  • 2004年10月10日 11:41
  • 892

JDK 1.5 特性使用实例6--staticimport

  定义一个包含常量的接口。即我们熟知的反模式 常量接口Constants.java package maoxiang.examples.jdk15.staticimport; /*** @autho...
  • maoxiang
  • maoxiang
  • 2004年10月10日 11:57
  • 722

JDK 1.5 特性使用实例1--Generics

 特别说明:虽然Sun 把新版本的JDK按中国人的习惯取名为5.0,尽管新版本的新特性是如此之多,不过我还是要把新版本称为JDK 1.5。 Generics 是JDK 1.5 一个最重要的特性,主要用...
  • maoxiang
  • maoxiang
  • 2004年10月10日 11:32
  • 1120

JDK 1.5 特性使用实例5--metadata

 定义一个metadata . Test.java package maoxiang.examples.jdk15.metadata; import java.lang.annotation.*; /...
  • maoxiang
  • maoxiang
  • 2004年10月10日 11:54
  • 974

线程基础:JDK1.5+(8)——线程新特性(上)

JDK1.5中一个重要特性就是util.concurrent包和其子包(当让JDK1.5中的特性还包括了很多,例如泛型、解包/封包等,但这些不属于我们这个专题讨论的范围)。在这个系列的专题中,我们已经...
  • yinwenjie
  • yinwenjie
  • 2016年02月13日 18:34
  • 5985

JDK1.5-1.8的区别

jdk5新特性 1、自动装箱和拆箱 2、枚举 3、静态导入 4、可变参数 5、內省    是Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性那么,那我们可以通过get...
  • wangxs_ooo
  • wangxs_ooo
  • 2017年01月03日 14:58
  • 780

JDK/JAVA 1.5到1.9版本特性对比

1.5 1.自动装箱与拆箱: 2.枚举(常用来设计单例模式) 3.静态导入 4.可变参数 5.内省 1.6 1.Web服务元数据 2.脚本语言支持 3.JTable的排序和过滤 4.更简单,更强大...
  • hotpots
  • hotpots
  • 2017年08月03日 13:39
  • 3934

JDK 1.5 特性

泛型(Generics)--为集合(collections)提供编译时类型安全,无需每刻从Collections取得一个对象就进行强制转换(cast)  增强的“for”循环(Enhanced ...
  • chenjian902
  • chenjian902
  • 2011年08月07日 22:51
  • 140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDK 1.5 特性使用实例4--Enum
举报原因:
原因补充:

(最多只允许输入30个字)