Java
Beginner
1 min read
Static Members, Inner Classes, and Enums
Example
public class StaticAndEnum {
// Enum with fields and methods
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);
private final double mass; // in kilograms
private final double radius; // in metres
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
static final double G = 6.67300E-11;
double surfaceGravity() {
return G * mass / (radius * radius);
}
double surfaceWeight(double otherMass) {
return otherMass * surfaceGravity();
}
}
// Static nested class (no outer instance needed)
static class Config {
static final int MAX_RETRIES = 3;
static final String DEFAULT_HOST = "localhost";
// ...
}
// Static initializer block
static final java.util.Map<String, Integer> CODES;
static {
CODES = new java.util.HashMap<>();
CODES.put("OK", 200);
CODES.put("NOT_FOUND", 404);
CODES.put("ERROR", 500);
}
public static void main(String[] args) {
double earthWeight = 75.0; // kg
double mass = earthWeight / Planet.EARTH.surfaceGravity();
System.out.println("Weight on each planet (for " + earthWeight + " kg person):");
for (Planet p : Planet.values()) {
System.out.printf(" %-10s : %6.2f N%n", p, p.surfaceWeight(mass));
}
System.out.println("\nHTTP status codes:");
CODES.forEach((k, v) -> System.out.printf(" %-10s = %d%n", k, v));
System.out.println("Max retries: " + Config.MAX_RETRIES);
System.out.println("Earth ordinal: " + Planet.EARTH.ordinal()); // 2
}
}