Вопросы с тегом «java8»

Java 8 относится к новейшей версии платформы Java.

110
Зачем использовать Optional в Java 8+ вместо традиционных проверок нулевых указателей?

Недавно мы перешли на Java 8. Теперь я вижу приложения, заполненные Optionalобъектами. До Java 8 (Стиль 1) Employee employee = employeeServive.getEmployee(); if(employee!=null){ System.out.println(employee.getId()); } После Java 8 (Стиль 2) Optional<Employee> employeeOptional =...

99
Почему стандартные и статические методы были добавлены к интерфейсам в Java 8, когда у нас уже были абстрактные классы?

В Java 8 интерфейсы могут содержать реализованные методы, статические методы и так называемые методы «по умолчанию» (которые классам реализации не нужно переопределять). На мой (возможно, наивный) взгляд, не было необходимости нарушать подобные интерфейсы. Интерфейсы всегда были контрактом, который...

80
Как называется функция, которая не принимает аргументов и ничего не возвращает? [закрыто]

В java.util.functionпакете Java 8 мы имеем: Функция : принимает один аргумент, выдает один результат. Потребитель : принимает один аргумент, ничего не производит. Поставщик : не принимает аргументов, дает один результат. ... : другие случаи обработки примитивов, двух аргументов и т. Д. Но мне нужно...

64
Почему в классах Java 8 java.time отсутствует метод getMillis ()?

Java 8 имеет совершенно новую библиотеку для дат и времени в пакете java.time, что очень приветствуется для всех, кому раньше приходилось использовать JodaTime или из-за необходимости создавать собственные вспомогательные методы обработки дат. Многие классы в этом пакете представляют временные...

56
Есть ли выигрыш в производительности при использовании ссылочного синтаксиса метода вместо лямбда-синтаксиса в Java 8?

Пропускают ли ссылки на методы накладные расходы на лямбда-оболочку? Могут ли они в будущем? Согласно Учебному руководству по Java о методах : Иногда ... лямбда-выражение делает только вызов существующего метода. В этих случаях часто проще обратиться к существующему методу по имени. Ссылки на...

49
Обходной путь для проверенных исключений Java

Я высоко ценю новые функции Java 8, касающиеся лямбд и интерфейсов методов по умолчанию. Тем не менее, я все еще скучаю с проверенными исключениями. Например, если я просто хочу перечислить все видимые поля объекта, я хотел бы просто написать это: Arrays.asList(p.getClass().getFields()).forEach( f...

39
Почему я должен использовать «функциональные операции» вместо цикла for?

for (Canvas canvas : list) { } NetBeans предлагает мне использовать «функциональные операции»: list.stream().forEach((canvas) -> { }); Но почему это предпочтительнее ? Во всяком случае, труднее читать и понимать. Вы звоните stream(), затем forEach()используете лямбда-выражение с параметром...

37
Это антипаттерн, чтобы использовать peek () для изменения элемента потока?

Предположим, у меня есть поток вещей, и я хочу «обогатить» их серединой потока, я могу использовать peek()это, например: streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); Предположим, что изменение объектов в этой точке в коде является правильным поведением - например,...

30
Вывод типа в Java 8

Собирается ли введение новой лямбда-нотации (см., Например, эту статью ) в Java 8 какого-либо вывода типа? Если да, то как новая система типов повлияет на язык Java в...

25
Почему используется необязательная преференция для проверки нуля переменной?

Возьмите два примера кода: if(optional.isPresent()) { //do your thing } if(variable != null) { //do your thing } Насколько я могу судить, самое очевидное отличие состоит в том, что Optional требует создания дополнительного объекта. Тем не менее, многие люди начали быстро принимать дополнительные. В...

23
Почему Optional.get () без вызова isPresent () плох, а не iterator.next ()?

При использовании нового Java8 streams api для поиска одного конкретного элемента в коллекции я пишу такой код: String theFirstString = myCollection.stream() .findFirst() .get(); Здесь IntelliJ предупреждает, что get () вызывается без предварительной проверки isPresent (). Тем не менее, этот код:...

19
Имеет ли смысл измерять условное покрытие для кода Java 8?

Мне интересно, не устарели ли измерения покрытия условного кода текущими инструментами для Java после появления Java 8? С Java 8 - х Optionalи Streamчасто мы можем избежать кода ветвь / петлю, что делает его легко получить очень высокое условное покрытие без проверки всех возможных путей...

19
Разумно ли возвращать потоки везде, где мы обычно возвращаем коллекции?

Разрабатывая мой API, который не привязан к какому-либо устаревшему коду, я часто нахожу себя пишущим методы, которые являются чисто конвейерными потоками и заканчиваются сбором результатов. Как этот: ImmutableSet<T> deriveSomethingMeaningfulFromPrivateState() { return...

18
Передача функции Scala в метод Java 8

Следующий код Scala работает и может быть передан методу Java, ожидающему функцию. Есть ли более чистый способ сделать это? Вот мой первый проход: val plusOne = new java.util.function.Function[Int,Int] { override def apply(t:Int):Int = t + 1 override def andThen[V](after:function.Function[_ >:...

15
Является ли Collection.stream (). Filter (). ForEach () неэффективным по сравнению со стандартом для каждого цикла?

IntelliJ IDEA только что порекомендовал мне заменить следующий цикл for-each на вызов Java 8 forEach: for (Object o : objects) { if (o instanceof SomeObject) { doSomething(); } } Рекомендуемый вызов будет выглядеть так: objects.stream().filter(o -> o instanceof SomeObject).forEach(o ->...

14
Это хорошая практика для реализации двух методов Java 8 по умолчанию друг с другом?

Я проектирую интерфейс с двумя связанными методами, подобными этому: public interface ThingComputer { default Thing computeFirstThing() { return computeAllThings().get(0); } default List<Thing> computeAllThings() { return ImmutableList.of(computeFirstThing()); } } Приблизительно половина...

13
Является ли «статический интерфейс» хорошей практикой?

Я только недавно заметил, что есть возможность иметь статические методы в интерфейсах. Как и в случае статических полей интерфейса, есть интересное поведение: они не наследуются. Я не уверен, что это полезно в реальных интерфейсах, которые должны быть реализованы. Тем не менее, он позволяет...

12
Должны ли экземпляры Java 8 Stream всегда быть close () 'd?

Квот Javadoc : Потоки имеют метод BaseStream.close () и реализуют AutoCloseable, но практически все экземпляры потоков на самом деле не нужно закрывать после использования. Как правило, закрывать будут только те потоки, источником которых является канал ввода-вывода (например, те, которые...

12
Причины удаления типов функций в Java 8

Я пытался понять, почему JDK 8 Lambda Expert Group (EG) решила не включать новый тип функции в язык программирования Java. Просматривая список рассылки, я нашел ветку с обсуждением удаления типов функций . Многие из утверждений для меня неоднозначны, возможно, из-за отсутствия контекста, а в...

11
Есть ли причина не использовать Optional в качестве аргумента метода в том случае, если вы знаете, что аргумент является чем-то, что может или не может быть необходимо?

С Java 8 я видел все больше и больше статей об использовании Option / Optional. Я понимаю, что они пытаются изобразить, и вижу много примеров того, как они используются в качестве возвратов. Однако я не вижу, чтобы они использовались в качестве аргументов метода / функции в языках, в которых нет...