Стандартный интерфейс Comparable

(java.lang.Comparable)

Метод sort () класса Arrays упорядочивает массив объектов, если они реализуют интерфейс Comparable.

public interface Comparable {

int compareTo (Object other);

} // метод сравнивает текущий объект с other и возвращает

int<0, если текущий меньше,

int =0, если равно,

int>0, если больше.

Например, в классе Employee сравним зарплаты:

public int compareTo (Object otherObject) {

Employee other = (Employee) otherObject;

if (salary < other.salary) return -1;

if (salary > other.salaty) return 1;

return 0;

}

При описании класса теперь указываем - класс реализует интерфейс

class Employee implements Comparable {

private double salary;

public int compareTo (…) {}

}

И можем делать следующее:

Employee [] staff = new Employee [3];

staff [0] = new Employee (“Harry”, 35000);

staff [1] = new Employee (“Care”, 75000);

staff [2] = new Employee (“Tony”, 38000);

java.util.Arrays.sort (staff); // import java.util.*

А в методе Arrays.sort () написано:

… if (((Comparable) a[i]).compareTo(a[j]) >0) {

//Поменять a[i] и a[j] местами }

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

class Employee extends Person implements Comparable, Cloneable

Паттерн, когда часть операций выполняется на уровне базовых абстрактных классов и интерфейсов и используется наследование от них с конкретной реализацией этих абстракций называется паттерн Шаблонный метод (Template Method).

Тема 10

Внутренние классы


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: