2

问候 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 语句如下:

String input;

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

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

如果我们有一个很长的变量列表,那么这段代码就会变得很长而且相当乏味。有没有办法概括这段代码并减少重复性,例如类似的东西(我意识到这行不通):

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

谢谢您的回答!

4

1 回答 1

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>或他们所持有的任何课程)

于 2017-09-28T08:50:05.310 回答