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

Используйте этот тег для вопросов, относящихся к Java 8, которая является версией 8 (внутренний номер 1.8) платформы Java, выпущенной 18 марта 2014 года. В большинстве случаев вам также следует указывать тег java.

5
Java8: почему запрещено определять метод по умолчанию для метода из java.lang.Object
Методы по умолчанию - отличный новый инструмент в нашем наборе инструментов Java. Однако я попытался написать интерфейс, определяющий defaultверсию toStringметода. Java сообщает мне, что это запрещено, поскольку методы, объявленные в, java.lang.Objectнельзя defaultредактировать. Почему это так? Я знаю, что существует правило «базовый класс всегда побеждает», поэтому по умолчанию (каламбур;) любая defaultреализация …


5
Есть ли польза от обновления скомпилированного кода Java 7 до Java 8?
У меня есть старое приложение, написанное на Java 7. Оно отлично работает в Java 8 JRE. Я не планирую переписывать какой-либо код, чтобы использовать функции Java 8. Есть ли какие-либо технические преимущества в обновлении скомпилированного кода до последней версии Java 8 JDK? Чтобы было ясно, код в настоящее время скомпилирован …
127 java  performance  java-8 



4
Перейти к следующему элементу с помощью цикла foreach в Java 8 в потоке
У меня проблема с потоком Java 8 foreach, пытающимся перейти к следующему элементу в цикле. Я не могу установить команду вроде continue;, только return;работает, но в этом случае вы выйдете из цикла. Мне нужно перейти к следующему элементу цикла. Как я могу это сделать? Пример (не работает): try(Stream<String> lines = …
127 java  java-8 

3
Получить первый элемент, соответствующий критериям
Как получить первый элемент, соответствующий критерию в потоке? Я пробовал это, но не работает this.stops.stream().filter(Stop s-> s.getStation().getName().equals(name)); Этот критерий не работает, метод фильтра вызывается не в классе Stop. public class Train { private final String name; private final SortedSet<Stop> stops; public Train(String name) { this.name = name; this.stops = new …
122 java  java-8  java-stream 

10
Скопируйте поток, чтобы избежать «поток уже обработан или закрыт»
Я хотел бы продублировать поток Java 8, чтобы иметь возможность работать с ним дважды. Я могу collectкак список и получать новые потоки из этого; // doSomething() returns a stream List<A> thing = doSomething().collect(toList()); thing.stream()... // do stuff thing.stream()... // do other stuff Но я думаю, что должен быть более эффективный …

3
Форматирование LocalDateTime с часовым поясом в Java8
У меня есть этот простой код: DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss.SSSSSS Z"); LocalDateTime.now().format(FORMATTER) Тогда я получу следующее исключение: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: OffsetSeconds at java.time.LocalDate.get0(LocalDate.java:680) at java.time.LocalDate.getLong(LocalDate.java:659) at java.time.LocalDateTime.getLong(LocalDateTime.java:720) at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298) at java.time.format.DateTimeFormatterBuilder$OffsetIdPrinterParser.format(DateTimeFormatterBuilder.java:3315) at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2182) at java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1745) at java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1719) at java.time.LocalDateTime.format(LocalDateTime.java:1746) Как решить эту проблему?
121 java  java-8  java-time 

9
Есть ли у лямбда-выражений какое-либо применение, кроме сохранения строк кода?
Есть ли у лямбда-выражений какое-либо применение, кроме сохранения строк кода? Есть ли какие-либо специальные функции, предоставляемые лямбдами, которые решают проблемы, которые было нелегко решить? Типичное использование, которое я видел, заключается в том, что вместо написания этого: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer o2) { …
120 java  lambda  java-8 

3
Отформатируйте дату с помощью нового API даты и времени
Я играл с новым API даты и времени, но при запуске: public class Test { public static void main(String[] args){ String dateFormatted = LocalDate.now() .format(DateTimeFormatter .ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(dateFormatted); } } Выбрасывает: Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay at java.time.LocalDate.get0(LocalDate.java:680) at java.time.LocalDate.getLong(LocalDate.java:659) at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298) at java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2543) at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2182) at …

6
Получить последний элемент Stream / List в однострочном формате
Как я могу получить последний элемент потока или списка в следующем коде? Где data.careasнаходится List<CArea>: CArea first = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).findFirst().get(); CArea last = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .collect(Collectors.toList()).; //how to? Как видите, получить первый элемент filterне сложно. Однако получение последнего элемента в однострочнике - настоящая боль: Кажется, я …
119 java  list  java-8  java-stream 

4
CompletableFuture | thenApply против thenCompose
Я не могу понять разницу между thenApply() и thenCompose(). Итак, может ли кто-нибудь предоставить допустимый вариант использования? Из документов Java: thenApply(Function<? super T,? extends U> fn) Возвращает новое значение, CompletionStageкоторое при нормальном завершении этого этапа выполняется с результатом этого этапа в качестве аргумента предоставленной функции. thenCompose(Function<? super T,? extends CompletionStage<U>> …

6
Что означает лямбда с двумя стрелками в Java 8?
Раньше я читал несколько руководств по Java 8. Прямо сейчас я столкнулся со следующей темой: поддерживает ли Java каррирование? Здесь я вижу следующий код: IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); Я понимаю, что этот пример суммирует 2 элемента, но я не могу понять конструкцию: a …
118 java  lambda  java-8  currying 

3
В чем разница между PermGen и Metaspace?
До Java 7 в памяти JVM была область под названием PermGen , где JVM хранила свои классы. В Java 8 он был удален и заменен областью под названием Metaspace . Каковы наиболее важные различия между PermGen и Metaspace? Единственное различие, которое я знаю, это то, что java.lang.OutOfMemoryError: PermGen spaceего больше …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.