Java8, class loaders, reference types, xml Flashcards
Какие новшества появились в Java 8?
Lamba expression Method references default method new tools stream API Date Time API Optional Nashorn, JavaScript Engine
Что такое лямбда выражения, какой у них синтаксис?
(argument)->(body)
Для чего используются лямбда выражения?
Уменьшение количества кода
Последовательное и параллельное выполнение
Какая область видимости лямбда выражений?
Лямбда-выражения имеют доступ к области видимости в которой они были объявлены. Лямбда-выражения в отличии от локальных и анонимных классов не порождают своей области видимости объекта, то есть, не переопределяют переменную this.
Что такое функциональные интерфейсы?
Это интерфейсы, которые должны содержать только один абстрактный метод.
Runablr, Callable,Comparator, ActionListener
Для используется аннотация @FunctionalInterface?
Для обозначения интерфейса функциональным
Могут ли лямбда-выражения работать с статическими полями?
В отличии от локальных переменных, мы можем записывать значения в экземплярные поля класса и статические переменные внутри лямбда-выражений
Для чего используется оператор ::?
Для получения ссылки на метод или конструктор
Какие есть виды ссылок на методы?
Ссылка на статический метод (ContainingClass::staticMethodName)
Ссылка на метод конкретного объекта
(ContainingObject::instanceMethodName)
Ссылка на метод произвольного объекта конкретного типа
(ContainingType::methodName)
Ссылка на конструктор
(ClassName::new)
Как определяется какой конструктор будет передан через ClassName::new?
Автоматически, компилятором. Сигнатуры должны совпадать.
Что такое предикаты?
Предикаты - это функции, принимающие один аргумент, и возвращающие значение типа boolean.
Что позволяет делать интерфейс Function?
Функции принимают один аргумент и возвращают некоторый результат. Методы по умолчанию могут использоваться для построения цепочек вызовов(compose, andThen)
Что такое поставщики (suppliers) в java8?
поставщики (suppliers) предоставляют результат заданного типа. В отличии от функции, поставщики не принимают аргументов.
Что такое потребители(Consumers)
Потребители представляют собой операции, которые производятся на одним входным аргуметом
Что такое опциональные значения(optional)
Optionals - это контейнер для значения, которое может быть null. Optionals не являются функциональными интерфейсами, однако удобное средство предотвращения NPE
Что такое потоки java.util.Stream?
java.util.Stream представляет собой последовательность элементов, над которой можно проводить операции (промежуточные - intermediate или конечные - terminal). Конечные операции возвращают результат определенного типа, а промежуточные операции возвращают тот же поток.
Что позволяют сделать потоки java.util.Stream?
Фильтрация
Сортировка данных
Конвертация
Поиск по шаблону
Поддерживают ли потоки реализацию Map
Нет
Что делают операции filter и forEach?
filter Фильтрует все элементы потока
Принимает предикат. Промежуточная над результатом.
forEach принимает функцию, которая вызывается для каждого элемента в (уже отфильтрованом) поток. Конечная операция.
Что такое операция Sorted?
Промежуточная
возвращает отсортированное представление потока
Сортирует в обычном порядке, если не предоставлен другой компаратор