类型的arraylist undefined方法

时间:2017-04-02 10:47:27

标签: java generics arraylist

我有一个方法,它将ArrayList作为参数。 类歌有不同的方法,如getTitle(),getInterpret(),toString(),toString2()......

public class Song implements Comparable<Song>{

private String title;
private String interpret;

public Song(String title,String interpret){

    this.title=title;
    this.interpret=interpret;

}

public String getTitle() {
    return title;
}

public String getInterpret() {
    return interpret;
}


public String toString2(){
    return title+" - "+interpret;
}

@Override
public int compareTo(Song otherSong) {

    return title.compareToIgnoreCase(otherSong.getTitle());
}

public String toString() {

    return interpret+" - "+title;
}

}

方法printList将Song的ArrayList作为参数:

public <Song> void printList(ArrayList<Song> songList,String sortBy){

    JLabel track;

    for(int i=0;i<songList.size();i++){

        if(sortBy=="Artist"){
        track = new JLabel("\n- "+songList.get(i).toString());}

        else if(sortBy=="Song"){
        track = new JLabel("\n- "+songList.get(i).toString2());}

    }

我在songList.get(i).toString2()上有一个错误,方法toString2()未定义类型Song,似乎我只能访问类Object的方法。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

您已将方法设为通用,并选择命名通用类型Song。它不应该是通用的:

public void printList(ArrayList<Song> songList,String sortBy){

另外,请将字符串与equals()进行比较,而不是==