帮助使用ArrayList作为参数构造一个类

时间:2011-09-04 11:14:10

标签: java arraylist

我一直试图解决这个问题几个小时,但我被卡住了,因此我来这里寻求帮助。 注:我正在使用BlueJ来构建这些类,因为我还在学习。

我要做的是创建一个PlayList,它有两个参数:name和trackList的ArrayList。 然后它创建一个播放列表并将列表中的曲目(按顺序)复制到播放列表中;但是到目前为止我还不想要任何帮助。

我的问题是我不确定如何在构造PlayList时调用ArrayList。因为指定的类型是。

public class PlayList
{    
private String myName;
private ArrayList<Track> myTracks;
private int myDuration;

public PlayList(String name, ArrayList<Track> tracks) {
    name = myName;
    myTracks = new ArrayList<Track>();
    for (Track t : tracks) {
        myTracks.add(t);
    }
}

}

在BlueJ中,当我构造一个新的PlayList类时,它为String name和ArrayList轨道提供了一个空字段框。字符串名称没问题,因为我可以简单地添加“任何东西”,但是我对于ArrayList轨道感到困惑?

我知道这可能不是一个非常具体的问题,但我还在学习。

2 个答案:

答案 0 :(得分:2)

sunadorer的回答应该回答你的直接问题。关于类中字段的命名约定和构造函数的参数,我有一些一般性的评论。

我不会在字段前添加'my'。这有点像样式,但我不会反对使用相同的名称作为构造函数参数。您可以在引用该字段时使用this.name来区分参数和字段。

此外,在这里使用ArrayList似乎是不必要的限制:您可以使用更通用的List接口(ArrayList只是其中一个实现,因此您不必触摸{ {1}}如果你想要另一种PlayList以后的o):

List

答案 1 :(得分:1)

PlayList的构造函数希望类型为ArrayList的对象填充Track类型的元素。因此,要创建PlayList,您必须提供已创建的播放列表。

这取决于你周围的调用,也许你已经在那里建立了一个列表,可以把它放到你的PlayList构造函数中,但是你需要这样的东西:

// Create an empty list
ArrayList<Track> tracks = new ArrayList<Track>();
// Add a track. e.g. when receiving a gui event
tracks.add(track); // track was created with new Track()

或者您可能不需要/想要PlayList个对象之外的列表。您可以使用PlayList个对象来管理和封装这些对象,方法是将构造函数更改为仅自己创建一个空列表,并允许其他人通过addTrack方法向其添加轨道。