enum data type defined..

I couldn't understand how enum data type is defined in the code below:

it is from http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html

will any one explain it ? (the curly bracket defining enum type is ended only at the end...also how to compile this piece of code ?)

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) {

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));

}

}

[1484 byte] By [Sangfroida] at [2007-11-27 7:06:45]
# 1

You compile it like you'd compile any other Java code. There's no special pre-processing needed, if that's what you're thinking.

The class goes from the first { after the "enum" to the matching closing bracket.

What happens is that this stuff is turned into a class by the compiler. Kind of like how +, when applied to Strings, is magically and invisibly turned by the compiler into StringBuffer or StringBuilder class instances and method invocations. The class produced from enums fits the typesafe enum idiom (see Effective Java by Joshua Bloch).

paulcwa at 2007-7-12 18:58:03 > top of Java-index,Java Essentials,New To Java...