Запитання з тегом «java8»

Java 8 відноситься до новітньої версії платформи Java.

10
Навіщо використовувати необов’язково в 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 = Optional.ofNullable(employeeService.getEmployee()); if(employeeOptional.isPresent()){ Employee employee = employeeOptional.get(); System.out.println(employee.getId()); } Я не бачу додаткової вартості, Optional<Employee> employeeOptional = employeeService.getEmployee();коли сама …
110 java  java8 

5
Чому до інтерфейсів Java 8 додавали статичні методи за замовчуванням, коли у нас вже були абстрактні класи?
У Java 8 інтерфейси можуть містити реалізовані методи, статичні методи та так звані "типові" методи (які класам реалізації не потрібно переосмислювати). На мій (напевно, наївний) погляд, не було потреби порушувати такі інтерфейси. Інтерфейси завжди були контрактом, який ви повинні виконати, і це дуже проста і чиста концепція. Зараз це поєднання …

3
Як називається функція, яка не приймає аргументів і нічого не повертає? [зачинено]
У java.util.functionпакеті Java 8 ми маємо: Функція : бере один аргумент, видає один результат. Споживач : Бере один аргумент, нічого не дає. Постачальник : не приймає аргументів, дає один результат. ... : Інші справи, що стосуються примітивів, 2 аргументи тощо ... Але мені потрібно розібратися зі справою " не бере …

3
Чому в класах Java 8 Java.time відсутні метод getMillis ()?
У Java 8 є ціла нова бібліотека для дат та часу в пакеті java.time, що дуже вітається для всіх, кому доводилося користуватися JodaTime раніше або клопотатись із створенням власних допоміжних методів обробки дат. Багато класів у цьому пакеті представляють часові позначки і мають допоміжні методи, як getHour()отримати години від мітки …
64 java  java8 

3
Чи є корисність для використання синтаксису опорного методу замість лямбда-синтаксису на Java 8?
Чи пропускають посилання методів накладні покриття лямбда-обгортки? Чи можуть вони в майбутньому? Відповідно до навчального посібника Java щодо посилань на методи : Іноді ... лямбда-вираз не робить нічого, крім виклику існуючого методу. У цих випадках часто зрозуміліше посилатися на існуючий метод по імені. Довідки методів дозволяють вам це зробити; вони …

6
Вирішення винятків для перевірених Java
Дуже ціную нові функції Java 8 щодо інтерфейсів лямбдасів та методів за замовчуванням. Та все ж мені все одно нудно за перевіреними винятками. Наприклад, якщо я просто хочу перерахувати всі видимі поля об’єкта, я хотів би просто написати це: Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); Тим не менш, оскільки getметод може …

3
Чому я повинен використовувати «функціональні операції» замість циклу?
for (Canvas canvas : list) { } NetBeans пропонує мені використовувати "функціональні операції": list.stream().forEach((canvas) -> { }); Але чому це віддається перевазі ? Якщо що-небудь, важче читати і розуміти. Ви дзвоните stream(), forEach()використовуючи лямбда-вираз із параметром canvas. Я не бачу, як це краще, ніж forцикл у першому фрагменті. Очевидно, я …

3
Чи антипатерн використовувати peek () для зміни елемента потоку?
Припустимо, у мене є потік Речей, і я хочу "збагатити" їх середнім потоком, я можу використовувати peek()це, наприклад: streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); Припустимо, що мутація Речей у цьому пункті коду є правильною поведінкою - наприклад, thingMutatorметод може встановити поле "lastProcessed" на поточний час. Однак peek()у більшості контекстів означає "дивись, але не чіпай". Користуємося …

1
Введіть умовивід у Java 8
Чи потребуватиме введення нової лямбда-нотації (див., Наприклад, цю статтю ) в Java 8, потрібний певний тип виводу? Якщо так, то як система нового типу вплине на мову Java в цілому?

9
Чому для додаткової перевірки змінної використовується додаткова преференція?
Візьміть два приклади коду: if(optional.isPresent()) { //do your thing } if(variable != null) { //do your thing } Наскільки я можу сказати, найбільш очевидною різницею є те, що необов'язково вимагає створення додаткового об'єкта. Однак багато людей почали швидко приймати необов’язкові. Яка перевага використання необов’язкових даних проти нульової перевірки?
25 java  java8 

3
Чому Optional.get () без виклику isPresent () поганий, але не iterator.next ()?
Використовуючи нові потоки Java8 api для пошуку одного конкретного елемента в колекції, я пишу такий код: String theFirstString = myCollection.stream() .findFirst() .get(); Тут IntelliJ попереджає, що get () викликається без перевірки спочатку isPresent (). Однак цей код: String theFirstString = myCollection.iterator().next(); ... не дає попередження. Чи є якась глибока різниця …
23 java8 

1
Чи є сенс вимірювати умовне покриття коду Java 8?
Мені цікаво, чи вимірювання покриття умовного коду поточними інструментами для Java не застаріло з моменту появи Java 8. Завдяки Java 8 Optionalі Streamми часто можемо уникати гілок / циклів коду, що дозволяє легко отримати дуже високе умовне покриття без тестування всіх можливих шляхів виконання. Порівняємо старий код Java з кодом …

3
Чи розумним є повернення потоків туди, куди ми зазвичай повертаємо колекції?
Під час розробки мого API, який не прив’язаний до жодного застарілого коду, я часто виявляю себе способами написання, які суто конвеєр потоків припиняється шляхом збору результатів. Як ця: ImmutableSet<T> deriveSomethingMeaningfulFromPrivateState() { return myPrivateThingies.stream() .map(this::ownerOfThing) .map(Owner::socialStatus) .filter(SocialStatus::isHeAFineMatey) .collect(MyCustomCollectors.toImmutableSet()); } Зараз більшості клієнтів цього класу зазвичай потрібна колекція (у цьому випадку ImmutableSet) …

1
Передача функції 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[_ >: Int, _ <: V]): function.Function[Int, V] = ??? override def …

1
Чи неефективний Collection.stream (). Filter (). ForEach () порівняно зі стандартом для кожного циклу?
IntelliJ IDEA рекомендував мені щойно замінити наступний цикл для кожного циклу на виклик Java 8 "forEach": for (Object o : objects) { if (o instanceof SomeObject) { doSomething(); } } Рекомендований дзвінок хотів би так: objects.stream().filter(o -> o instanceof SomeObject).forEach(o -> doSomething()); Якщо я не розумію, як працює основна функціональність …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.