Comparator является типом класса?

Я читал о типовых классах в Scala и думал, что хорошо разбираюсь в них, пока не вспомнил Java.java.util.Comparator

Если я правильно понимаю,Ordering это прототип типового класса. Единственная разница, которую я могу придумать междуComparator и примерOrdering заключается в том, что компараторы обязательно являются явными, в то время как упорядочения могут быть и часто являются неявными.

ЯвляетсяComparator класс типа? У меня складывается (ошибочное?) Впечатление, что в Java на самом деле нет классов типов. Означает ли это, что класс типов должен иметь возможность быть неявным? Я считал, что неявные преобразования классов типов в основном являются синтаксическим сахаром - как это ни крутопросто" давая компилятору достаточно подсказки - я что-то упустил?

В следующем примере кода показано, какComparator добавляет операцию упорядочения к типу, который неэто без необходимости изменять указанный тип.

// Comparator used to retroactively fit the MyExample class with an ordering operation.
public static class MyExampleComparator implements Comparator {
    public static final Comparator SINGLETON = new MyExampleComparator();

    private MyExampleComparator() {}

    public int compare(MyExample a, MyExample b) {
        return a.value - b.value;
    }
}

// Custom type, its only purpose is to show that Comparator can add an ordering operation to it when it doesn't
// have one to begin with.
public static class MyExample {
    private final int value;

    public MyExample(int v) {
        value = v;
    }

    public String toString() {
        return Integer.toString(value);
    }
}

public static void main(String... args) {
    List list = new ArrayList();

    for(int i = 0; i < 10; i++)
        list.add(new MyExample(-i));

    // Sorts the list without having had to modify MyExample to implement an interface.
    Collections.sort(list, MyExampleComparator.SINGLETON);

    // Prints the expected [-9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
    System.out.println(list);
}

Ответы на вопрос(3)

Ваш ответ на вопрос