首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解析方法"compareTo(Friend)“

无法解析方法"compareTo(Friend)“
EN

Stack Overflow用户
提问于 2018-02-25 09:13:33
回答 1查看 4.4K关注 0票数 0

我正在创建一个FriendList,它扩展了ArrayList,并填充了一个Friend对象。然而,当我尝试访问朋友通常可用的方法时,编译器说它无法解析该方法-在本例中为compareTo(朋友)。

FriendList类:

代码语言:javascript
复制
public class FriendList<Friend> extends ArrayList<Friend> {

    private boolean isAdded;

    public FriendList() {
        isAdded = false;
    }

    public void alphabetAdd(Friend friend) {
        if (this.isEmpty()) {
            add(friend);
            return;
        }

        int index = 0;

        // add friends alphabetically
        while (!isAdded) {
            Friend f = this.get(index+1);
            if (f.compareTo(friend) < 0) {
                index++;
            } else {
                this.add(index, friend);
                isAdded = true;
            }
        }
    }
}

Friend类:

代码语言:javascript
复制
public class Friend implements Comparable<Friend> {

// constructors and other methods work fine - just need to see compareTo

//    @Override
    public int compareTo(@NonNull Friend o) {

        String name1 = getUserFirstName() + getUserLastName();
        Friend f;

        if (o instanceof Friend) {
            f = (Friend) o;

            String name2 = f.getUserFirstName() + f.getUserLastName();

            if (name1.compareTo(name2) < 0)
                return -1;
            else if (name1.compareTo(name2) > 0)
                return 1;

        }

        return 0;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-25 09:51:13

问题出在FriendList<Friend>中。这被视为像FriendList<T>这样的泛型类的声明,并且Friend不是一个实际的类型,而是一个别名,这就是为什么只有在Object中声明的方法才可用。将类的声明更改为public class FriendList extends ArrayList<Friend>

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48969296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档