java 关于在多态里用循环判断调用枚举类型,在枚举类型数量多的情况下我想寻求更简便的处理方式

//enum GetWheels.java

public enum GetWheels{
ONE_WHEEL,TWO_WHEELS,THREE_WHEELS;
}

//Cycle.java

class Cycle{
public void wheel(GetWheels g){
System.out.println("Cycle.wheel() "+g);
}
}

//RideCycle

import static will.Print.*;
class Unicycle extends Cycle{
public void wheel(GetWheels g){
print("Unicyle.wheel() "+g);
}
}
class Bicycle extends Cycle{
public void wheel(GetWheels g){
print("Bicycle.wheel() "+g);
}
}
class Tricycle extends Cycle{
public void wheel(GetWheels g){
print("Tricycle.wheel() "+g);
}
}
public class RideCycle{
public static void ride(Cycle c,int i){

//那么当枚举类型出现很多种还要用switch吗?

//寻求更简便方法

switch(i){
case 1: c.wheel(GetWheels.ONE_WHEEL);
    break;
case 2: c.wheel(GetWheels.TWO_WHEELS);
    break;
case 3: c.wheel(GetWheels.THREE_WHEELS);
    break;
default: print("No cycle here");
}

}
public static void main(String[] args){
Unicycle one = new Unicycle();
Bicycle two = new Bicycle();
Tricycle three = new Tricycle();
ride(one,1);
ride(two,2);
ride(three,3);
}
}

可以考虑用设计模式重构这段代码,解决switch分支过多的问题可以使用状态模式。
参考http://blog.csdn.net/hguisu/article/details/7557252。
祝好!

        可以使用values方法!
        enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang. Comparable两个接口。所有枚举类都提供了一个values方法,该方法可以很方便地遍历所有的枚举值。
        下面是完整代码:

1.Wheels.java

public enum Wheels
{
FIRST_WHEEL,SECOD_WHEEL,THIRD_WHEEL,FOURTH_WHEEL;
}

2.WheelTest.java

public class WheelTest
{
public static void main(String[] args)
{
Wheels[] ws=Wheels.values();
for (Wheels w : ws)
{
System.out.println(w);
}
}
}

详细教程可以关注我的博客!