将同一组方法推广到不同的变量

时间:2017-09-28 08:31:20

标签: java variables methods generalization

问候StackOverflow,

我有一个问题,你们是否可能,如果是这样,如何推广同一组方法做不同的变量集?

让我们用一个例子来说明这一点:假设我们有变量,所有变量都声明了相同的方法。在这个简单的例子中,让我们说2个变量设置了setter和getter,如下所示:

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-statement ,如下所示:

String input;

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

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

如果我们有一长串变量,那么这段代码变得冗长而且相当繁琐。是否有一种方法可以概括这些代码并使其重复性降低,例如与此类似的东西(我意识到这不会起作用):

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

感谢您的回答!

1 个答案:

答案 0 :(得分: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>或他们持有的任何课程)