2016-12-04 30 views
0

我在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

回答

0

如果列表中有這樣一些簡單的方法,因爲當我爲此輸入 獲取器和設置器時,代碼變得非常巨大?

不是真的,您不需要爲此列出大量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

1

我想這樣做:

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

0

即使放在一個列表可以很好,這取決於你的喜好或需要。

聲明:

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

調用具有:

levelBallCounts.get(...) 
相關問題