Читаю Хорстмана Java 8 издание. В одной из глав используются статические методы интерфейса Comparator
. До дженериков еще не дошел, но примерно понимаю что это. В этом интерфейсе есть метод comparing
:
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));
}
Не могу понять как он работает. Что значит возвращаемый методом тип:
<T, U extends Comparable<? super U>> Comparator<T>
и в операторе return
, это приведение к типу, или еще что?
(Comparator<T> & Serializable)
Было бы хорошо, если кто-то мог объяснить построчно, что происходит в этом методе.
public static <T, U extends Comparable<? super U>> Comparator<T> comparing(...)
Comparator<T>
- возвращаемый параметризованный тип, где T
- параметр заведомо неизвестного типа, но во время выполнения будет известен. Данный параметр объявлен в следующей записи: <T, U extends Comparable<? super U>>
, поэтому далее в внутри метода можно использовать параметр типа T
.<T, U extends Comparable<? super U>>
- объявляет два типовых параметра: первый - T
, второй - U
. Параметр типа U
может быть любым типом, наследующим Comparable
. Comparable
в свою очередь может быть параметризован любым типом, который не выходит за границы U
. Получается параметр U
может быть любым типом между Comparable
и U
.но во время выполнения будет известен.
во время выполнения ничего не известно так как в Java стираются типы. И ещё, опять таки из за этого можно не заморачиваться с типами. Метод .compareTo выполнится в зависимости от того какой в действительности это обьект с его создания, а не от того какой у него сейчас каст.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В активити с BottomNavigation всего 3 путкта меню и 3 фрагмента которые переключаются при навигацииДля одного из них нужно всегда хранить состояние
Вообщем код брал с примеров от гуглаsetUpWebViewDefaults(mWebView); вызываю при старте соответственно
Как реализовать чтобы при нажатии на уведомление открывалось приложение и содержимое уведомления(Заголовок, Текст сообщения) добавлялось...