mboost-dp1

Når Java enum's bruges til andet end tiltænkt


Gå til bund
Gravatar #2 - Windcape
12. jul. 2011 18:34
Noget siger mig at Java enum's ikke bare er glorified integers i Java's bytecode :o
Gravatar #3 - arne_v
12. jul. 2011 18:43
#2

Korrekt.

Joshua Bloch implementerede hans enum design fra Effective Java i Java 1.5.

Man kan se hvad der sker ved at decompile med en pre-1.5 decompiler.


public enum X { A, B, C }



public final class X extends Enum
{

public static X[] values()
{
return (X[])$VALUES.clone();
}

public static X valueOf(String s)
{
return (X)Enum.valueOf(X, s);
}

private X(String s, int i)
{
super(s, i);
}

public static final X A;
public static final X B;
public static final X C;
private static final X $VALUES[];

static
{
A = new X("A", 0);
B = new X("B", 1);
C = new X("C", 2);
$VALUES = (new X[] {
A, B, C
});
}
}



Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login