У меня есть список песен, я пытаюсь произвести названия в качестве одной строки , напримерКак я могу вернуться назад?
ILo<Song> slist2 = new ConsLo<Song>(this.help,
new ConsLo<Song>(this.hotelc, this.mtlos));
должны производить «Помощь, Hotel California», но я получаю «Help, Hotel California» Это мой код
public String forCons(Song first, ILo<Song> rest) {
if(rest.equals(null)) {
return first.title;
}
return first.title + ", " + rest.accept(this);
}
где метод принимает просто рецидивирует метод на отдых.
Я также попытался это
public String forCons(Song first, ILo<Song> rest) {
ILo<Song> mt = new MtLo<Song>();
if(rest.equals(mt)) {
return first.title;
}
return first.title + ", " + rest.accept(this);
}
public <R> R accept(ILoVisitor<R, T> ilov) {
return ilov.forCons(this.first, this.rest);
}
где
// A visitor for the ILo<T> classes that
// and produces the result of the type R
interface ILoVisitor<R, T>
Ило представляет список элементов типа T, ConsLo представляет собой непустой список элементов типа Т
Что делают ваши классы 'ConsLo' и' ILo'? – tbodt
покажите нам метод 'accept()'. –
отредактируйте ваш вопрос, а не вставьте код в комментарии, пожалуйста. Кроме того, вы используете 'ILoVisitor', размещаете этот интерфейс (и, возможно, и реализацию). –