java 枚举类型(翻译自Java Tutorials)
2012-12-03 21:47
411 查看
原文出自 /article/4630637.html
英文出自 http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
枚举类型,它是字段包含固定数量的常量的类型。常见的例子,罗盘的方向包括东西南北,还有星期的天。
因为他们是常量,所有枚举类型的字段的名字一般是大写字母。
java编程语言,声明一个枚举类型使用enum关键字。例如,你要指定一整个星期的天的枚举类型是:
应该在需要使用固定组常量的任何时候使用枚举类型。这包括自然枚举类型,例如银河系的行星,这些你可以在编译时知道任何可能值。例如,菜单选择,命令行标志等。
这里有一些介绍如何使用Day枚举类型声明的代码,如下:
输出是:
java编程语言枚举类型比其他编程语言更加强大。enum声明,定义了类(称为enum类型)。枚举类体,可以包含方法和其他字段。编译器为enum自动添加特殊的方法。例如,有一个静态的values方法,返回一个按照声明顺序排列的enum值数组。这个方法通常结合for-each结构,遍历enum类型的所有值。例如,下面
注意:所有enum类隐式继承
下面的例子中,
每个枚举常量都有质量和半径参数的声明。这些值,通过构造方法,在常量初始化时传递进来。java要求常量首先定义,其次才是字段和方法。所以,在字段和方法之前,enum常量列表必须以分号(;)结束。
注意:enum类型的构造方法必须是包内私有或者是private访问。它自动创建在enum体内的开始创建声明的常量,不允许直接调用enum的构造方法。
对于它的属性和构造方法,行星上有方法,使您可以检索你在每个行星的表面引力和重量。下面是一个示例程序,根据你在地球的体重(任何单位),计算,并打印你在所有的行星的体重(在同一个单位):
如果在命令行运行
英文出自 http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
枚举类型,它是字段包含固定数量的常量的类型。常见的例子,罗盘的方向包括东西南北,还有星期的天。
因为他们是常量,所有枚举类型的字段的名字一般是大写字母。
java编程语言,声明一个枚举类型使用enum关键字。例如,你要指定一整个星期的天的枚举类型是:
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
应该在需要使用固定组常量的任何时候使用枚举类型。这包括自然枚举类型,例如银河系的行星,这些你可以在编译时知道任何可能值。例如,菜单选择,命令行标志等。
这里有一些介绍如何使用Day枚举类型声明的代码,如下:
public class EnumTest { Day day; public EnumTest(Day day) { this.day = day; } public void tellItLikeItIs() { switch (day) { case MONDAY: System.out.println("Mondays are bad."); break; case FRIDAY: System.out.println("Fridays are better."); break; case SATURDAY: case SUNDAY: System.out.println("Weekends are best."); break; default: System.out.println("Midweek days are so-so."); break; } } public static void main(String[] args) { EnumTest firstDay = new EnumTest(Day.MONDAY); firstDay.tellItLikeItIs(); EnumTest thirdDay = new EnumTest(Day.WEDNESDAY); thirdDay.tellItLikeItIs(); EnumTest fifthDay = new EnumTest(Day.FRIDAY); fifthDay.tellItLikeItIs(); EnumTest sixthDay = new EnumTest(Day.SATURDAY); sixthDay.tellItLikeItIs(); EnumTest seventhDay = new EnumTest(Day.SUNDAY); seventhDay.tellItLikeItIs(); } }
输出是:
Mondays are bad. Midweek days are so-so. Fridays are better. Weekends are best. Weekends are best.
java编程语言枚举类型比其他编程语言更加强大。enum声明,定义了类(称为enum类型)。枚举类体,可以包含方法和其他字段。编译器为enum自动添加特殊的方法。例如,有一个静态的values方法,返回一个按照声明顺序排列的enum值数组。这个方法通常结合for-each结构,遍历enum类型的所有值。例如,下面
Planet类里的代码,演示了遍历银河系的所有行星。
for (Planet p : Planet.values()) { System.out.printf("Your weight on %s is %f%n", p, p.surfaceWeight(mass)); }
注意:所有enum类隐式继承
java.lang.Enum。由于java不支持多继承,所有enum也不能继承其他类。
下面的例子中,
Planet是一个枚举类型,代表银河系里的所有行星。他们是恒定的质量和半径属性定义。
每个枚举常量都有质量和半径参数的声明。这些值,通过构造方法,在常量初始化时传递进来。java要求常量首先定义,其次才是字段和方法。所以,在字段和方法之前,enum常量列表必须以分号(;)结束。
注意:enum类型的构造方法必须是包内私有或者是private访问。它自动创建在enum体内的开始创建声明的常量,不允许直接调用enum的构造方法。
对于它的属性和构造方法,行星上有方法,使您可以检索你在每个行星的表面引力和重量。下面是一个示例程序,根据你在地球的体重(任何单位),计算,并打印你在所有的行星的体重(在同一个单位):
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); 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) { if (args.length != 1) { System.err.println("Usage: java Planet <earth_weight>"); System.exit(-1); } 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)); } }
如果在命令行运行
Planet.class,参数是175,输出是:
$ java Planet 175 Your weight on MERCURY is 66.107583 Your weight on VENUS is 158.374842 Your weight on EARTH is 175.000000 Your weight on MARS is 66.279007 Your weight on JUPITER is 442.847567 Your weight on SATURN is 186.552719 Your weight on URANUS is 158.397260 Your weight on NEPTUNE is 199.207413
相关文章推荐
- java变量和方法的覆盖和隐藏(翻译自Java Tutorials)
- java 对象(翻译自Java Tutorials)
- java 理解实例和类成员(翻译自Java Tutorials)
- java表达式, 语句, 块(翻译自Java Tutorials)
- java类成员的访问控制(翻译自Java Tutorials)
- java 初始化字段(翻译自Java Tutorials)
- java操作符总结(翻译自Java Tutorials)
- java多态(翻译自Java Tutorials)
- java 实现接口(翻译自Java Tutorials)
- java控制流语句(翻译自Java Tutorials)
- java 分支语句(翻译自Java Tutorials)
- java Final类和方法(翻译自Java Tutorials)
- 开始立个flag,翻译OpenCV Java Tutorials Documentation 1.0~
- java 变量(翻译自Java Tutorials)
- java包(翻译自Java Tutorials)
- java使用接口(翻译自Java Tutorials)
- java 原生类型(翻译自Java Tutorials)
- java 接口(翻译自Java Tutorials)
- java switch语句(翻译自Java Tutorials)
- java 注解(翻译自Java Tutorials)