我一直试图解决这个问题几个小时,但我被卡住了,因此我来这里寻求帮助。 注:我正在使用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轨道感到困惑?
我知道这可能不是一个非常具体的问题,但我还在学习。
答案 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
方法向其添加轨道。