问候 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/