我怎样才能正确复发?

时间:2013-11-16 01:13:33

标签: java

我有一个歌曲列表,我正在尝试将标题生成为一个字符串 例如

ILo<Song> slist2 = new ConsLo<Song>(this.help,
        new ConsLo<Song>(this.hotelc, this.mtlos));

应该制作“帮助,加利福尼亚酒店”,但我一直得到“帮助,加州酒店” 这是我的代码

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>

ILo表示类型为T的项目列表,ConsLo表示类型为T的项目的非空列表

2 个答案:

答案 0 :(得分:0)

更改

if(rest.equals(null)) {
    return first.title;
}

if(rest == null ){
    return first.title;
}

答案 1 :(得分:0)

我真的不明白为列表等数据结构使用自定义类的原因是什么 如何使用标准库中的简单List<Song>

int size;

public static String forCons(Song first, List<Song> rest) {
    size = rest.size();        

    if(size == 1) {     // last element
        return first.getTitle();
    }
    return first.getTitle() + ", " + forCons(rest.get(0), rest.subList(1, size));
}