Если есть ArrayList вместо moviesAvailable и список принимает title, year, genre, price. Как я могу получить список фильмов, используя ArrayList из genres?
В классе Movie есть метод toString, который распечатывает фильмы. Когда я запускаю код, все, что находится за оператором if, не выполняется, потому что условие возвращается как ложное.




Вам нужно переопределить метод equals в классе Genre, чтобы условие работало, см. код ниже.
private String name;
Genre(String name){
this.name = name;
}
public boolean hasType(String genre) {
return genre.equals(this.name);
}
public boolean equals(Object o) {
if (!(o instanceof Genre)) {
return false;
}
return this.name.equals(((Genre)o).name);
}
лучшей реализацией будет: return (o instanceof Genre) ? ((Genre) o).name.equals(this.name) : false;
Вам нужно переопределить equals() в вашем классе Genre, чтобы вы могли сравнивать экземпляры этого класса друг с другом.
Вот быстрая реализация, которую можно легко расширить для дополнительных функций:
@Override
public boolean equals(Object o) {
if (!(o instanceof Genre)) {
return false;
}
return ((Genre) o).name.equals(this.name);
}
Ваш метод также не является нулевым. new Genre(null).equals(new Genre(null)) генерирует исключение NullPointerException.
@SamuelPhilipp "Вот быстрая реализация, который может легко расширяется для дополнительных функций"
Этот метод работает, это единственный способ решить проблему или есть что-то, что я могу изменить в коде, чтобы он работал?
@TDizzle Переопределение метода equals() — это именно то, что нужно вашему коду.
Вы можете ясно видеть, что вы вызываете метод «равно» Genre, но вы не переопределили его, поэтому вы используете метод по умолчанию, что неверно.