无法添加具有多个参数的ArrayList

时间:2019-05-07 12:29:49

标签: java arraylist

我有一个用于电影的ArrayList,它以电影titleyeargenreprice作为参数。 titleyearprice没有错误。我有3个类,MovieCatalogueGenre,并且为我提供了类Genre的代码。 Genre似乎发生了错误。

我没有更改Genre类,但是我尝试使用字符串,但是它带有错误,唯一的例外是当我放入null时。

我希望能够添加到ArrayList中,但是genre出现错误。

请原谅我缺乏理解,这是(技术上)我编程的第一年。

1 个答案:

答案 0 :(得分:7)

您的Movie构造函数仅将一个Genre作为参数,而应将List<Genre>作为参数:

Movie(String title, int year, Genre genre, int price){
}

应该是:

Movie(String title, int year, List<Genre> genres, int price){
}

完整电影课:

  public class Movie
  {
      private String title;
      private int year;
      private int price;
      private List<Genre> genres;

      Movie(String title, int year, List<Genre> genres, int price){
          this.title = title;
          this.year = year;
          this.genres = genres;
          this.price = price;
      }
  }

编辑:如果您不能更改Movie类,则意味着您只能传递一个Genre,而不能传递List。因此,您必须选择要通过的流派:

public class Catalogue
{
    private Kiosk kiosk;
    private List<Movie> moviesAvailable = new ArrayList<Movie>();
    private Set<Genre> genres =  new HashSet<Genre>();

    Catalogue(Kiosk kiosk){
    }

    Catalogue(){
        Genre sciFi = new Genre("SciFi");
        Genre drama = new Genre("Drama");
        Genre crime = new Genre("Crime");
        genres.add(sciFi);
        genres.add(drama);
        genres.add(crime);
        moviesAvailable.add(new Movie("Matrix", 1999, sciFi, 3));
        moviesAvailable.add(new Movie("Titanic", 1997, drama, 4));
        moviesAvailable.add(new Movie("The Silence of the Lambs", 1991, crime, 3));
        moviesAvailable.add(new Movie("Jurassic Park", 1993, sciFi, 4));
        moviesAvailable.add(new Movie("Terminator 2", 1991, sciFi, 3));
    }
}