package java.lang; /** * * @author Sven Köhler */ public abstract class Enum<E extends Enum<E>> implements Comparable<E> { //MISSING implements Serializable //MISSING public final Class<E> getDeclaringClass() private int ordinal; private String name; protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; } @Override protected final Object clone() throws CloneNotSupportedException { throw new CloneNotSupportedException(); } public final int compareTo(E o) { if (this.getDeclaringClass() != o.getDeclaringClass()) throw new ClassCastException(); if (this.ordinal == o.ordinal) return 0; return (this.ordinal > o.ordinal) ? 1 : -1; } @Override public final boolean equals(Object o) { return this==o; } @Override protected final void finalize() { //nothing } @SuppressWarnings("unchecked") public final Class<E> getDeclaringClass() { Class<?> c1 = this.getClass(); Class<?> c2 = c1.getSuperclass(); return (Class<E>)((c2 == Enum.class) ? c1 : c2); } @Override public final int hashCode() { return super.hashCode(); } public final String name() { return this.name; } public final int ordinal() { return this.ordinal; } @Override public String toString() { return this.name; } /** * @deprecated not implemented in leJOS */ @Deprecated @SuppressWarnings("unused") public static<T extends Enum<T>> T valueOf(Class<T> enumclas, String name) { throw new UnsupportedOperationException(); } }