从另一个对象获取数组列表
我现在有点被卡住了一部分任务,希望你能告诉我我哪里出错了。从另一个对象获取数组列表
我正在建立一个非常复杂的iTunes程序,目前正在研究一种方法来让所有参与特定音轨的音乐家显示出来(例如“Frank Black,Joey Santiago,Kim Deal”等)。方法需要通过检索Artist对象内的数组列表并显示它。
虽然我遇到了我的get()
方法问题。我知道我应该实施get()
方法,以便Track对象可以访问Artist对象中的字段,但是我尝试执行此操作的所有方法都发送了错误消息。到目前为止,我已经试过“for循环”的增强是这样的:
for (String member : members.getMembers()) {
其中“成员”是ArrayList
其中包含每个音乐家的名字的String
,但发出了“不能找到符号 - 可变成员“。然后,我试着这样做:
for (String member : Artist.members.getMembers()) {
但说“非静态变量成员不能从静态上下文中引用”。我觉得我错过了一些非常基本的东西。你们中的任何人都知道它可能是什么......?
如果成员是一个ArrayList中持有的字符串,那么你应该做这样的
for (String m: members){
}
或者
for (String m : Artist.members){
}
这曾经是适用于您的situition
'会员'必须成为公共领域才能发挥作用吗? – Zetland 2014-10-29 17:01:12
是的,如果你像这样访问它,那么它应该是公开的,其他明智的你需要访问器方法 – 2014-10-29 17:09:30
这里Artist
是一个类,不是一个类的实例。通常艺术家没有任何成员,而John Doe尤其可以拥有成员名单。
你需要为了得到一个艺术家的实例,要求他的会员
假设每个Track
有一个Artist
,每个Artist
可能有多个音乐家(成员),那么你正在寻找的东西是这样的:
public class Artist {
private List<String> members;
// ...
public List<String> getMembers() {
return Collections.unmodifiableList(members);
}
}
public class Track {
private Artist artist;
// ...
public String getMusicians() {
StringBuilder sb = new StringBuilder();
int length;
for (String member : artist.getMembers()) {
sb.append(member).append(", ");
}
return sb.substring(0, sb.length() - 2);
}
}
首先你需要实例化一个Artist
对象,然后遍历包含艺术家ArrayList<String>
。
class Artist {
private List<String> artists;
...
public List<String> getArtists() {
return artists;
}
...
}
那么当你想遍历它
public static void main(String[] args) { //or where ever you call it from
members = new Artist();
// do stuff to members object
for (String m : members.getArtists())
System.out.print(m + " ");
System.out.println();
}
能否请您发表您的主类和艺术家类。 – 2014-10-29 16:28:04
你可以向你展示你尝试这样做的课程吗? – conFusl 2014-10-29 16:33:55
你能告诉我们你是如何声明成员ArrayList的。你使用了static关键字吗?请只添加更多的代码:) – bvdb 2014-10-29 16:36:31