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

时间:2014-10-29 16:24:34

标签: java

我目前对部分作业感到有些困惑,希望你能告诉我出错的地方。

我正在构建一个简单的iTunes程序,目前正致力于让所有音乐人参与特定音轨并将其显示为字符串(例如" Frank Black,Joey Santiago,Kim Deal&# 34;等等)此方法需要通过检索Artist对象内的数组列表并显示它来工作。

我的get()方法遇到了问题。我知道我应该实现get()方法,以便Track对象可以访问Artist对象中的字段,但我尝试这样做的所有方法都发送了错误消息。到目前为止,我已经尝试了一个增强的for循环'像这样:

    for (String member : members.getMembers() ) {

其中'成员'是一个ArrayList,其中包含每个音乐家姓名的String,但是发送了#34;无法找到符号 - 变量成员"。然后我尝试了这个:

    for (String member : Artist.members.getMembers() ) {

但是说"非静态变量成员不能从静态上下文引用"。我感觉我在这里遗漏了一些非常基本的东西。你们中的任何人都知道它可能是什么......?

4 个答案:

答案 0 :(得分:0)

如果member是一个包含字符串的arrayList,那么你应该这样做

for (String m: members){

}

for (String m : Artist.members){
}

适用于你的地位

答案 1 :(得分:0)

这里Artist是一个类,而不是类的实例。通常,艺术家没有任何成员,而John Doe尤其可以拥有成员列表。

你需要获得一个Artist实例才能要求他的成员

答案 2 :(得分:0)

假设每个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);
    }
}

答案 3 :(得分:0)

首先,您需要实例化一个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();
}