我正在尝试根据 Java 书中的练习编写一些程序,但不太了解要求我做的事情

I'm trying to program something from an exercise in my Java Book, not quite getting what is being asked of me

它谈论泛型 类 并说明如何从导入 ArrayList 的 ArrayList 创建 类 非字符串、整数或双精度类型的泛型。

这本书明确指出你可以写这样的字段:

私有ArrayList成员; 私有 ArrayList 机器;

然后你可以在构造函数中基于此创建 类 并分配它们。

练习 4.4 说要创建一个 "library" 的私有字段,它可以容纳 "Book".

类型的 ArrayList

练习 4.5 要求 cs101 的局部变量,它可以保存 Student 的 ArrayList。

然后到 4.7,它需要对库、cs101 和跟踪变量进行分配,以创建适当的 ArrayList 对象。

这是我写的(不包括一些方法),将它添加到 BlueJ 项目文件夹中的一个已经可用的项目中。

进口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 机器;所以我对如何找不到符号感到困惑,因为它甚至找不到我教科书中定义的符号,这让我相信也许是我的电脑?

大家怎么看?

您需要有一个名为 "Book" 的 class 和一个名为 "Student" 的 class 才能使该代码正确。 ArrayList class 定义为 ArrayList , E 是任何类型对象的占位符。

当你像这样创建数组列表时

ArrayList<Book> = new ArrayList<>();

您是说要创建一个可以容纳 Book 对象的数组列表。如果没有Class叫Book,Java就不知道你想要什么。创建 2 个简单的 classes,例如

public class Book{

   private String name;

   public Book(String n){
      this.name = n;
   }
//getters and setters after
}

还有一个学生class

public class Student{

   private String name;

   public Student(String n){
      this.name = n;
   }
//getters and setters after
}

将它们添加到您的项目中,现在您的 ArrayList 声明有效,因为您有一个 class 用于 Book 和一个 class 用于 Student。

您告诉程序您需要一个名为 "Library" 的 Book 对象数组列表和一个名为 cs101 的 Student 对象数组列表。现在你必须创建那些 objects/classes。您不必创建字符串 class,因为 java 已经有一个适合您的字符串 class。

图书class:

    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;
    }
}

现在您必须对 Student 执行相同的操作。您还可能希望使用 access/mutator 方法(getter 和 setter)。