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

标签 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 语句,如下所示:

String input;

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

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

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

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

感谢您的回答!

最佳答案

最简单的方法是使用 map :

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> 或他们所持有的任何类(class))

关于java - 将同一组方法推广到不同的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46464485/

相关文章:

java - 从 MySQL 数据库导入时无法复制到 Hadoop 中的 Datanode

unix - ssh远程变量分配?

c - C Primer Plus 6th 中的 C 语言数据类型

python - 将正则表达式结果保存到变量中

PYTHON:能够从同一个类中调用方法需要什么?

java - 在Java中如何用字符串替换任意字符?

java - 我的名字存储在 mysql 中,如何在我的 android 应用程序中显示该信息

java - 带allowOverwrite的IgniteDataStreamer比putAll慢?

java - arraylist 未存储在 hashmap 中

jquery - 私有(private)方法以字符串形式返回