创建列表,而不是硬编码参数值

问题描述:

我在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方法,代码的情况真的很大。

任何人有更好的主意如何做到这一点?

+1

如果恒定更好地使用一个单独的文件,或只是创建一个枚举,使其易于维护。 – Shriram

+0

“BallCount”倍数是5还是'x'因子总是? – developer

如果列表中有这样一些简单的方法,因为当我为此输入 获取器和设置器时,代码变得非常巨大?

不是真的,您不需要为此列出大量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; 
     } 
    } 
+0

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 
+1

请OP,与这个答案一起去。是要打这个,但他击败了我。 – efemoney

即使放在一个列表可以很好,这取决于你的喜好或需要。

声明:

private static final List<Integer> levelBallCounts; 
static { 
    levelBallCounts = new ArrayList<>(); 
    levelBallCounts.add(5); 
    levelBallCounts.add(10); 
    [...] 
} 
[...] 

调用具有:

levelBallCounts.get(...)