2017-09-28 55 views
2

問候的StackOverflow,歸納同一方法集不同的變量

我對你們一個問題,即是否有可能,如果又如何,概括同一組的方法做不同的變量集?

我們用一個例子來舉例說明:假設我們有變量,所有變量都有相同的方法聲明。在這個簡單的例子,讓我們說,2個變量有getter和setter方法設置像這樣:

private LinkedList football = new LinkedList(); 
private LinkedList jogging = new LinkedList(); 

public LinkedList getFootball() { 
    return football; 
} 
public void setFootball(LinkedList football) { 
    this.football = football; 
} 
public LinkedList getJogging() { 
    return jogging; 
} 
public void setJogging(LinkedList jogging) { 
    this.jogging = jogging; 
} 

現在讓我們假設有某種類型的輸入,它確定這個變量將採取和調用他們的方法。至關重要的是要提到這些方法具有相同的作用,只適用於不同的變量。 一種方法(簡單的)如何做到這一點是通過if語句如下:

String input; 

if (input.equals("football")) { 
    getFootball(); 
} 

if (input.equals("jogging")) { 
    getJogging(); 
} 

如果我們有變量一個長長的清單,這個代碼變長和相當繁瑣。有沒有辦法來概括這段代碼,使它少重複,例如一些simmilar,因爲這(我知道這是行不通的):

String input = X; 
if (getX == true) { 
    return X; 

謝謝您的解答!

回答

2

要做到這一點,最簡單的方法是使用地圖:

public static final String footballStr = "football"; 
public static final String joggingStr = "jogging"; 

private Map<String, LinkedList> sports = new HashMap<>(); 
{ 
    sports.put(footballStr, new LinkedList()); 
    sports.put(joggingStr, new LinkedList()); 
} 

public LinkedList getSportsByInput(String key) 
{ 
    if (sports.containsKey(key)) 
    { 
     LinkedList ll = sports.get(key); 

     //... 
    } 
} 

像這樣這個類可以使用靜態字符串(定長字符串減少錯誤的可能性)和用戶可以方便地添加新的體育


旁註:

LinkedList<>作品與仿製藥,應該是參數化的。 (如LinkedList<String>或他們持有的任何課程)