Реализация Comparable в Java 1.4.2 - PullRequest
       8

Реализация Comparable в Java 1.4.2

0 голосов
/ 29 апреля 2011

У меня вопрос по Java.Я пытаюсь реализовать Comparable в моем классе.Исходя из моих исследований, утверждение для моего класса будет:

public class ProEItem implements Comparable<ProEItem> {
    private String name;
    private String description;
    private String material;
    private int bomQty;

// other fields, constructors, getters, & setters redacted

    public int compareTo(ProEItem other) {
        return this.getName().compareTo(other.getName());
        }
}// end class ProEItem

Однако я получаю ошибку компиляции, которая {ожидается после Comparable в объявлении класса.Я считаю, что это потому, что я застрял с Java 1.4.2 (да, это к сожалению, правда).

Так что я попробовал это:

   public class ProEItem implements Comparable {
        private String name;
        private String description;
        private String material;
        private int bomQty;

    // other fields, constructors, getters, & setters redacted

        public int compareTo(ProEItem other) {
            return this.getName().compareTo(other.getName());
            }
    }// end class ProEItem

Без ProEItem после сопоставимых, номоя ошибка компиляции такова:

"ProEItem is not abstract and does not override abstract method compareTo(java.lang.Object) in java.lang.Comparable
public class ProEItem implements Comparable {"

Так что мой вопрос в том, что я делаю неправильно, чтобы реализовать сопоставимый в 1.4.2?Спасибо.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2011

Должен быть объявлен

public int compareTo(Object other)

Затем вы должны низвергнуть объект other по вашему типу ProEItem и выполнить сравнение. Это нормально делать без проверки типа other, так как compareTo заявляет, что может выдать ClassCastException (вызывающий абонент остерегается).

1 голос
/ 29 апреля 2011

Ваш метод compareTo () должен взять Object, а затем вы должны привести его к ProEItem внутри метода.

public int compareTo(Object other) {
        return this.getName().compareTo(((ProEItem)other).getName());
        }
0 голосов
/ 29 апреля 2011

compareTo принимает Object в качестве параметра в 1.4.2

например

public int compareTo(Object other) {
            return this.getName().compareTo(other.getName());
}
...