【发布时间】:2014-07-05 20:42:26
【问题描述】:
有没有办法为枚举中的每个常量调用不同的方法?
public enum ShipType {
SMALL,MEDIUM,LARGE,ENORMOUS,TETRIS;
public int[][] getRegionOfShip(int[] startingPosition, Aligment aligment){
//How do can I decide which function to call?
}
private int[][] getRegionOfSmallShip(int[] startingPosition){
...
}
private int[][] getRegionOfMediumShip(int[] startingPosition, Aligment aligment){
...
}
private int[][] getRegionOfLargeShip(int[] startingPosition, Aligment aligment){
...
}
private int[][] getRegionOfEnourmusShip(int[] startingPosition, Aligment aligment){
...
}
private int[][] getRegionOfTetrisShip(int[] startingPosition, Aligment aligment){
...
}
}
当我这样创建枚举时:
ShipType shipType = ShipType.SMALL;
我称之为:
shipType.getRegionOfShip(startingPosition,aligment);
我怎样才能做到,打电话给
private int[][] getRegionOfSmallShip(int[] startingPosition)
方法? 类似于检查 Enum 类中调用了哪个常量
【问题讨论】:
-
只需覆盖每个常量的方法。
-
简单地在方法中使用
this。if(this == SMALL){//method call for small}