C
Es geht auch anders. Zwar auch mit Iterator aber ich denke ein klein wenig anders als hier schon besprochen wurde. Dazu ist es vielleicht hilfreich zu wissen dass jeder Aufzählungstyp implizit von java.lang.Enum erbt.
import java.util.EnumSet;
import java.util.Iterator;
public class EnumTest {
public static void main (String args[]) {
System.out.println(Rank.NINE);
EnumTool<Rank> tool = new EnumTool<Rank>();
System.out.println(tool.successorOf(Rank.NINE));
System.out.println(tool.successorOf(tool.successorOf(Rank.NINE)));
System.out.println(tool.successorOf(tool.successorOf(tool.successorOf(Rank.NINE))));
System.out.println(tool.successorOf(tool.successorOf(tool.successorOf(tool.successorOf(Rank.NINE)))));
System.out.println(tool.successorOf(tool.successorOf(tool.successorOf(tool.successorOf(tool.successorOf(Rank.NINE))))));
}
}
class EnumTool<E extends Enum<E>> {
public E successorOf(E e) {
E next = null;
int index = -1;
EnumSet<E> enums = null;
if (e!=null) {
enums = EnumSet.allOf((Class<E>)e.getClass());
for (Iterator<E> i = enums.iterator(); i.hasNext() ;) {
E testRank = i.next();
if (index==e.ordinal()) {
next = testRank;
break;
}
index++;
}
}
return next;
}
}
enum Rank {
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING,
ACE
}
Hoffe dass man damit weiterkommt. Wo ich mir noch nicht sicher bin ist der Iterator ... ob der immer die Definitionsreihenfolge beachet? Müsste mal getestet werden. Ansonsten wird man obige Implementation wohl abändern müssen.
Edit: Bessere Implementation eingefügt.