gpt4 book ai didi

java - 获取调用哪个枚举常量

转载 作者:行者123 更新时间:2023-11-30 07:07:44 24 4
gpt4 key购买 nike

有没有办法为枚举中的每个常量调用不同的方法?

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 类中调用了哪个 Constant

最佳答案

与其创建一个单独的方法来调用每个枚举值,不如重写该方法:

public enum ShipType {
SMALL{
@Override
public int[][] getRegionOfShip(int[] startingPosition, Aligment aligment){

}
},
MEDIUM{
@Override
public int[][] getRegionOfShip(int[] startingPosition, Aligment aligment){

}
};
public abstract int[][] getRegionOfShip(int[] startingPosition, Aligment aligment);

如果您选择此选项,您将避免在添加新的船舶类型时向您的 ifs/switch 添加一个 case,并且不会忘记在没有编译时错误的情况下实现该方法。

关于java - 获取调用哪个枚举常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24590411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com