Невозможно @Override метод compareTo () в Java - PullRequest
2 голосов
/ 28 ноября 2011

Я пишу класс BankAccount, который помещает несколько банковских счетов в список массивов и сортирует их по номеру счета.Я написал метод compareTo() следующим образом:

public int compareTo(BankAccount another){
    if (Integer.parseInt(this.getAccountNumber()) > Integer.parseInt(another.getAccountNumber()))
        return 1;
    else if(Integer.parseInt(this.getAccountNumber()) < Integer.parseInt(another.getAccountNumber()))
        return -1;
    else
        return 0;

В моем основном методе accounts - это переменная для списка массивов.Когда я пытаюсь сделать Collections.sort(accounts);, я не могу этого сделать.Это дает мне ошибку, говоря что-то вроде «не могу создать экземпляр из аргументов, потому что фактические и формальные аргументы различаются по длине» и «выведенный тип не соответствует объявленной границе (ям)».Я думал, что это из-за того, что я не переопределил метод compareTo(), но когда я пытаюсь @Override it, он говорит: «метод не переопределяет или не реализует метод из супертипа».Я не понимаю, в чем проблема.Любая помощь будет оценена.

Ответы [ 5 ]

10 голосов
/ 28 ноября 2011

Ваш класс BankAccount должен реализовывать интерфейс java.lang.Comparable<BankAccount>, похоже, это не тот случай в вашем коде. Действительно, Collection.sort принимает коллекцию Comparable<T> в качестве аргумента.

3 голосов
/ 28 ноября 2011

Звучит так, будто вы забыли, чтобы ваш класс реализовывал Comparable.Убедитесь, что объявление вашего класса выглядит следующим образом:

... class BankAccount ... implements Comparable<BankAccount>

3 голосов
/ 28 ноября 2011

Чтобы переопределить метод compareTo, ваш класс должен реализовать интерфейс Comparable. compareTo по умолчанию не является частью java.lang.Object.

3 голосов
/ 28 ноября 2011

Убедитесь, что объявление вашего класса выглядит так:

public class BankAccount implements Comparable<BankAccount>
1 голос
/ 28 ноября 2011

Ваш класс реализует интерфейс Comparable? Если да, вы можете проверить импорт, чтобы убедиться, что он используется по умолчанию (java.lang.Comparable), а не из какого-либо другого пакета

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...