它讨论了通用类,并说明如何从ArrayList导出ArrayList创建非String,Integer或Double的泛型类的类。
这本书明确指出你可以写下这样的字段:
私有ArrayList成员; 私有ArrayList机器;
然后你可以在构造函数中创建基于此类的Classes并分配它们。
练习4.4说要创建一个“library”的私有字段,它可以容纳类型为“Book”的ArrayList。
练习4.5要求cs101的局部变量可以容纳Student的ArrayList。
然后按4.7,它想要对库,cs101和轨道变量进行分配,以创建适当的ArrayList对象。
这是我写的(不包括一些方法)将它添加到BlueJ项目文件夹中已经可用的项目中。
import java.util.ArrayList;
/**
* A class to hold details of audio files.
*
* @author David J. Barnes and Michael Kölling
* @version 2011.07.31
*/
public class MusicOrganizer
{
// An ArrayList for storing the file names of music files.
private ArrayList<String> files;
private ArrayList<Book> library;
private ArrayList<MusicTracks> tracks;
/**
* Create a MusicOrganizer
*/
public MusicOrganizer()
{
ArrayList<Student> cs101;
files = new ArrayList<String>();
library = new ArrayList<Book>();
cs101 = new ArrayList<Student>();
}
它告诉我它无法找到Book和MusicTracks的符号,但我已经完全按照本书定义私有ArrayList成员的方式定义了它们;和私人ArraryList机器;所以我很困惑如何找不到符号,因为它甚至找不到我学校书中定义的符号,这让我相信它可能是我的电脑?
你们觉得怎么样?
答案 0 :(得分:0)
您需要有一个名为“Book”的类和一个名为“Student”的类才能使该代码正确无误。 ArrayList类定义为ArrayList,E是任何类型对象的占位符。
当你创建像这样的arraylist时
ArrayList<Book> = new ArrayList<>();
您说要创建一个可以容纳Book对象的数组列表。如果没有名为Book的类,Java将不知道你想要什么。创建2个简单的类,类似于
public class Book{
private String name;
public Book(String n){
this.name = n;
}
//getters and setters after
}
和一个学生班
public class Student{
private String name;
public Student(String n){
this.name = n;
}
//getters and setters after
}
将这些添加到您的项目中,现在您的ArrayList声明是有效的,因为您有Book的类和Student的类。
答案 1 :(得分:0)
你告诉程序你想要一个名为“Library”的Book对象的Arraylist和一个名为cs101的Student对象的arraylist。现在您必须创建这些对象/类。你不必创建一个字符串类,因为java已经有了一个适合你的String类。
图书课程:
public class Book{
private String name, genre, author;
//This is called a constructor that instantiates Book objects
public Book(String name, String genre, String author){
//now you build the book object by assigning THIS particular book object with the passed in values
this.name = name;
this.genre = genre;
this.author = author;
}
}
现在你必须为学生做同样的事情。您还希望最有可能使用access / mutator方法(getter和setter)。