реализация сопоставимого интерфейса в Java - PullRequest
0 голосов
/ 04 марта 2011

Я хочу, чтобы мой класс реализовал интерфейс Comparable. Какой из следующих подходов является правильным

Вариант 1:

public Myclass implements Comparable<MyClass>{

  public int compareTo(MyClass o){
   //impl here
  }

}

Вариант 2:

public Myclass implements Comparable{

  public int compareTo(Object o){
     //check if o  instance of my class
     //impl here
  }


}

Ответы [ 2 ]

4 голосов
/ 04 марта 2011

Вариант 1 . Ответ в комментариях ко второму фрагменту. Вы бы избежали явного приведения типов.

Вариант 1 использует преимущества Java Generics. Вот ссылка на учебник по Generics

1 голос
/ 04 марта 2011

Я бы не решался назвать один «правильный», а другой «неправильный», но вариант 1 кажется «лучшим».В Варианте 1 используются универсальные шаблоны, и одно из основных преимуществ универсальных шаблонов заключается в том, чтобы избежать выполнения неудобного instanceof, сопровождаемого приведением из Варианта 2. Однако обобщенные элементы изначально не были частью Java, поэтому в некотором устаревшем коде все еще используется подход Варианта 2..

...