【发布时间】:2016-02-27 22:05:21
【问题描述】:
我正在努力使用一种动态返回的方法
ArrayList<Player>
这是我所拥有的:
奇幻课
public class Fantasy {
Squad team;
ArrayList<Player> substitutes = team.getList(substitutes);
}
小队班
public class Squad {
ArrayList<Player> substitutes;
// Some code adding stuff into the ArrayList
public ArrayList<Player> getList(String list) {
return ArrayList<Player> list; << PROBLEM
}
}
我想要一个方法getList(),通过它我可以传递一个ArrayList的名称,它将检查是否存在同名的ArratList,如果存在,将其作为ArrayList返回。
问题是我不知道如何检查是否有一个与我正在传递的字符串list 同名的 ArrayList。
可能的解决方案:
Map<String, ArrayList<Player>> arrayLists = new HashMap<String, ArrayList<Player>>(){{
put("goalKeepers", goalKeepers);
put("defenders", defenders);
put("midFielders", midFielders);
put("strikers", strikers);
put("substitutes", substitutes);
}};
和
public ArrayList<Player> getList(String list) {
return arrayLists.get(list);
}
但是,当我打电话时:
ArrayList test = getList("substitute");
或者每当我使用 getList();我收到以下错误:
无法从类型 Squad 对非静态方法 getList(String) 进行静态引用
【问题讨论】:
-
我没有完全理解你的问题,但是有一个返回列表的
getSubstitutes()方法不是更有意义:return substitutes;? -
Squad类中只有一个列表,因此您只有一个可能的列表要返回。此外,您的陈述“检查这种方法是否存在”对于您的其他问题也毫无意义。也许您应该查看术语“方法”在 Java 应用程序上下文中的含义。一般来说,您的问题按照目前的说法没有意义。 -
列表从何而来?您是否试图按名称将其从任何对象成员中提取出来?这不是一个好主意,为什么不使用
Map<string,List <Player>>如果您需要将字符串与玩家集合配对 -
@Vulcan 我不想使用 getSubstitutes() 方法,因为我有超过 5 个 ArrayList,并且不希望有 5 个不同的方法返回它们。
-
@MarkB 我的意思是“ArrayList”而不是方法。抱歉,打错字了。
标签: java