创建列表,而不是硬编码参数值
我在Java中有以下代码。创建列表,而不是硬编码参数值
private final int level1BallCount = 5;
private final int level2BallCount = 10;
private final int level3BallCount = 15;
private final int level4BallCount = 20;
private final int level5BallCount = 25;
private final int level6BallCount = 30;
private final int level7BallCount = 35;
private final int level8BallCount = 40;
private final int level9BallCount = 45;
private final int level10BallCount = 50;
private final int level11BallCount = 55;
private final int level12BallCount = 60;
现在这一切功能正常,但我想知道是否有像这样列出了一些更简单的方法,因为当我对于这种类型的getter和setter方法,代码的情况真的很大。
任何人有更好的主意如何做到这一点?
如果列表中有这样一些简单的方法,因为当我为此输入 获取器和设置器时,代码变得非常巨大?
不是真的,您不需要为此列出大量getter
方法。 可以使用enum
类型与单个get
方法如下所示您BallCounts
,如下图所示:
public enum BallCounts {
LEVEL1(5), LEVEL2(10);//add other levels
private int level;
private BallCounts(int count) {
this.level = level;
}
//Single getter method
public int getBallCountLevel() {
return level;
}
}
Enum是最好的选择。我做了一个枚举数组,并使用构造函数访问它们:-) – Testko
我想这样做:
private final int [] levelBallCounts = {5,10,15,20,25,30,35,40,45,50,55,60};
public int getLevelBallCountAtPos(int pos){
return levelBallCounts[pos-1];
}
或者干脆(不使用levelBallCounts
阵列):
public int getLevelBallCountAtPos(int pos){
return pos*5;
}
用法:
System.out.println(getLevelBallCountAtPos(1)); //returns 5
System.out.println(getLevelBallCountAtPos(4)); //returns 20
System.out.println(getLevelBallCountAtPos(12)); //returns 60
请OP,与这个答案一起去。是要打这个,但他击败了我。 – efemoney
即使放在一个列表可以很好,这取决于你的喜好或需要。
声明:
private static final List<Integer> levelBallCounts;
static {
levelBallCounts = new ArrayList<>();
levelBallCounts.add(5);
levelBallCounts.add(10);
[...]
}
[...]
调用具有:
levelBallCounts.get(...)
如果恒定更好地使用一个单独的文件,或只是创建一个枚举,使其易于维护。 – Shriram
“BallCount”倍数是5还是'x'因子总是? – developer