Вопросы с тегом «java-8»

172
Java 8: Как мне работать с методами исключения в потоках?

Предположим, у меня есть класс и метод class A { void foo() throws Exception() { ... } } Теперь я хотел бы вызывать foo для каждого экземпляра, Aдоставляемого потоком, например: void bar() throws Exception { Stream<A> as = ... as.forEach(a -> a.foo()); } Вопрос: Как правильно обработать...

171
Что делает оператор стрелки '->' в Java?

При поиске кода я наткнулся на оператор стрелки, что именно он делает? Я думал, что у Java не было оператора стрелки. return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> { return Car.SEDAN == ((Car)arg0).getStyle(); }); Подробности : Java 6, коллекция Apache Commons,...

171
Общая верхняя граница возвращаемого типа - интерфейс против класса - удивительно правильный код

Это пример из стороннего библиотечного API, но упрощенный. Скомпилировано с Oracle JDK 8u72 Рассмотрим эти два метода: <X extends CharSequence> X getCharSequence() { return (X) "hello"; } <X extends String> X getString() { return (X) "hello"; } Оба сообщают о предупреждении...

168
Java 8: лямбда-потоки, фильтрация по методам с исключением

У меня возникла проблема при проверке лямбда-выражений Java 8. Обычно это работает нормально, но теперь у меня есть методы, которые бросают IOException. Лучше всего, если вы посмотрите на следующий код: class Bank{ .... public Set<String> getActiveAccountNumbers() throws IOException {...

168
Intellij - Невозможно использовать более новые классы Java 8 - Ошибка: «Использование API задокументировано как @since 1.6+ ..»

Я пытаюсь использовать java.lang.function.Functionв моей кодовой базе Java 8, но я продолжаю получать следующую ошибку в Intellij. Использование API, задокументированного как @since 1.6+. Эта проверка находит все способы использования, которые имеют тег @since в своей документации. Это может быть...

168
Добавление двух потоков Java 8 или дополнительного элемента в поток

Я могу добавить потоки или дополнительные элементы, например: Stream stream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element)); И я могу добавлять новые вещи, как я, как это: Stream stream = Stream.concat( Stream.concat( stream1.filter(x -> x!=0), stream2) .filter(x -> x!=1),...

163
Можно ли скомпилировать код Java 8 для запуска на Java 7 JVM?

Java 8 представляет важные новые языковые функции, такие как лямбда-выражения. Эти изменения в языке сопровождаются такими значительными изменениями в скомпилированном байт-коде, которые могут помешать его запуску на виртуальной машине Java 7 без использования какого-либо...

161
Фильтруйте значения, только если не нуль, используя лямбду в Java8

У меня есть список объектов, скажем car. Я хочу отфильтровать этот список на основе какого-либо параметра, используя Java 8. Но если параметр есть null, он выбрасывает NullPointerException. Как отфильтровать нулевые значения? Текущий код выглядит следующим образом requiredCars =...

160
Можно ли привести поток в Java 8?

Можно ли привести поток в Java 8? Скажем, у меня есть список объектов, я могу сделать что-то вроде этого, чтобы отфильтровать все дополнительные объекты: Stream.of(objects).filter(c -> c instanceof Client) Однако после этого, если я хочу что-то сделать с клиентами, мне нужно разыграть каждого из...

158
Может ли Java-лямбда иметь более 1 параметра?

В Java возможно ли лямбда принимать несколько разных типов? Т.е. работает одна переменная: Function <Integer, Integer> adder = i -> i + 1; System.out.println (adder.apply (10)); Varargs также работают: Function <Integer [], Integer> multiAdder = ints -> { int sum = 0; for (Integer...

157
Как сериализовать лямбду?

Как я могу элегантно сериализовать лямбду? Например, код ниже выдает a NotSerializableException. Как я могу это исправить, не создавая SerializableRunnable"фиктивный" интерфейс? public static void main(String[] args) throws Exception { File file = Files.createTempFile("lambda", "ser").toFile(); try...

155
В чем разница между ZonedDateTime и OffsetDateTime?

Я прочитал документацию, но я все еще не могу понять, когда я должен использовать один или другой: OffsetDateTime ZonedDateTime Согласно документации OffsetDateTimeследует использовать дату записи в базу данных, но я не понимаю,...

154
Для чего используются функциональные интерфейсы в Java 8?

Я встретил новый термин в Java 8: «функциональный интерфейс». Я мог найти только одно применение при работе с лямбда-выражениями . Java 8 предоставляет несколько встроенных функциональных интерфейсов, и если мы хотим определить какой-либо функциональный интерфейс, мы можем использовать...

153
Java 8 поток в обратном порядке

Общий вопрос: как правильно реверсировать поток? Предполагая, что мы не знаем, из какого типа элементов состоит этот поток, каков общий способ реверсирования любого потока? Конкретный вопрос: IntStreamпредоставляет метод диапазона для генерации целых чисел в определенном диапазоне...

151
Невозможно получить LocalDateTime из TemporalAccessor при разборе LocalDateTime (Java 8)

Я просто пытаюсь преобразовать строку даты в объект DateTime в Java 8. После запуска следующих строк: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); LocalDateTime dt = LocalDateTime.parse("20140218", formatter); Я получаю следующую ошибку: Exception in thread "main"...

150
Зачем нужен комбайнер для метода reduce, преобразующего тип в java 8

Мне сложно полностью понять роль, которую combinerвыполняет reduceметод Streams . Например, следующий код не компилируется: int length = asList("str1", "str2").stream() .reduce(0, (accumulatedInt, str) -> accumulatedInt + str.length()); Ошибка компиляции говорит: (несоответствие аргументов; int...