Подтвердить что ты не робот

Каково значение символа "&" в возвращаемом значении?

public static <T, U extends Comparable<? super U>> Comparator<T> comparing(
        Function<? super T, ? extends U> keyExtractor)
{
    Objects.requireNonNull(keyExtractor);
    return (Comparator<T> & Serializable)
        (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
}

Мне интересна эта часть: return (Comparator<T> & Serializable)

Спасибо за вашу помощь!

4b9b3361

Ответ 1

Это означает, что результирующее значение будет передано в Comparator и Serializable (т.е. сериализуемый компаратор)

Обратите внимание, что при выполнении подобных действий вы можете указать только один класс (и бесконечное количество интерфейсов), потому что невозможно, чтобы класс наследовал более чем один супер -класс.