从另一个对象获取数组列表

问题描述:

我现在有点被卡住了一部分任务,希望你能告诉我我哪里出错了。从另一个对象获取数组列表

我正在建立一个非常复杂的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()) { 

但说“非静态变量成员不能从静态上下文中引用”。我觉得我错过了一些非常基本的东西。你们中的任何人都知道它可能是什么......?

+0

能否请您发表您的主类和艺术家类。 – 2014-10-29 16:28:04

+0

你可以向你展示你尝试这样做的课程吗? – conFusl 2014-10-29 16:33:55

+0

你能告诉我们你是如何声明成员ArrayList的。你使用了static关键字吗?请只添加更多的代码:) – bvdb 2014-10-29 16:36:31

如果成员是一个ArrayList中持有的字符串,那么你应该做这样的

for (String m: members){ 

} 

或者

for (String m : Artist.members){ 
} 

这曾经是适用于您的situition

+0

'会员'必须成为公共领域才能发挥作用吗? – Zetland 2014-10-29 17:01:12

+0

是的,如果你像这样访问它,那么它应该是公开的,其他明智的你需要访问器方法 – 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(); 
}