Tego znacznika należy używać w przypadku pytań specyficznych dla języka Java 8, który jest wersją 8 (numer wewnętrzny 1.8) platformy Java, wydanej 18 marca 2014 r. W większości przypadków należy również podać znacznik java.
Metody domyślne to fajne nowe narzędzie w naszym zestawie narzędzi Java. Próbowałem jednak napisać interfejs, który definiuje defaultwersję toStringmetody. Java mówi mi, że jest to zabronione, ponieważ metody zadeklarowane w java.lang.Objectnie mogą być defaultedytowane. Dlaczego tak się dzieje? Wiem, że istnieje zasada "klasa bazowa zawsze wygrywa", więc domyślnie (kalambur;) każda …
Google Guava ma predykat, który zawsze zwracatrue . Czy Java 8 ma coś podobnego Predicate? Wiem, że mógłbym użyć (foo)->{return true;}, ale chcę coś gotowego, analogicznego do Collections.emptySet().
Mam starą aplikację napisaną w Javie 7. Działa dobrze w środowisku JRE Java 8. Nie planuję przepisywania żadnego kodu w celu wykorzystania funkcji Java 8. Czy aktualizacja skompilowanego kodu do najnowszej JDK Java 8 ma jakieś techniczne korzyści? Dla jasności, kod jest obecnie skompilowany w Javie 7 i już działa …
Dlaczego ZonedDateTime now = ZonedDateTime.now(); System.out.println(now.withZoneSameInstant(ZoneOffset.UTC) .equals(now.withZoneSameInstant(ZoneId.of("UTC")))); wydrukować false? Spodziewałbym się, że oba ZonedDateTimeprzypadki będą równe.
Mam problem ze strumieniem Java 8 foreach próbującym przejść do następnego elementu w pętli. Nie mogę ustawić polecenia jak continue;, return;działa tylko, ale w tym przypadku wyjdziesz z pętli. Muszę przejść do następnego elementu w pętli. Jak mogę to zrobić? Przykład (nie działa): try(Stream<String> lines = Files.lines(path, StandardCharsets.ISO_8859_1)){ filteredLines = …
Jak zdobyć pierwszy element spełniający kryteria w strumieniu? Próbowałem tego, ale nie działa this.stops.stream().filter(Stop s-> s.getStation().getName().equals(name)); Kryteria te nie działają, metoda filtru jest wywoływana w klasie innej niż Stop. public class Train { private final String name; private final SortedSet<Stop> stops; public Train(String name) { this.name = name; this.stops = …
Chciałbym zduplikować strumień Java 8, abym mógł sobie z tym poradzić dwa razy. Mogę collectjako listę i uzyskać z tego nowe strumienie; // doSomething() returns a stream List<A> thing = doSomething().collect(toList()); thing.stream()... // do stuff thing.stream()... // do other stuff Ale wydaje mi się, że powinien być bardziej wydajny / …
Mam taki prosty kod: DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss.SSSSSS Z"); LocalDateTime.now().format(FORMATTER) Wtedy otrzymam następujący wyjątek: 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) Jak rozwiązać ten problem?
Czy wyrażenia lambda mają inne zastosowanie niż zapisywanie wierszy kodu? Czy są jakieś specjalne funkcje zapewniane przez lambdy, które rozwiązały problemy, które nie były łatwe do rozwiązania? Typowe użycie, które widziałem, jest takie, że zamiast pisać to: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer o2) …
Nie mogę zrozumieć różnicy między thenApply() a thenCompose(). Czy więc ktoś mógłby podać prawidłowy przypadek użycia? Z dokumentacji Java: thenApply(Function<? super T,? extends U> fn) Zwraca nową wartość, CompletionStagektóra po normalnym zakończeniu tego etapu jest wykonywana z wynikiem tego etapu jako argumentem dostarczonej funkcji. thenCompose(Function<? super T,? extends CompletionStage<U>> fn) …
Przeczytałem wcześniej kilka samouczków dotyczących języka Java 8. W tej chwili napotkałem następujący temat: Czy java obsługuje Currying? Tutaj widzę następujący kod: IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); Rozumiem, że ten przykład sumuje 2 elementy, ale nie rozumiem konstrukcji: a -> b -> a + …
Aż do Java 7 istniał obszar w pamięci JVM o nazwie PermGen , w którym JVM zachowywał swoje klasy. W Javie 8 został usunięty i zastąpiony obszarem o nazwie Metaspace . Jakie są najważniejsze różnice między PermGen i Metaspace? Jedyną różnicą, jaką znam, jest to, że java.lang.OutOfMemoryError: PermGen spacenie można …
W szczególności mam TabPane i chciałbym wiedzieć, czy jest w nim element o określonym identyfikatorze. Tak więc chciałbym to zrobić z wyrażeniem lambda w Javie: boolean idExists = false; String idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } }
W wielu innych językach, np. Haskell, łatwo jest wielokrotnie powtórzyć wartość lub funkcję, np. aby otrzymać listę 8 kopii wartości 1: take 8 (repeat 1) ale nie znalazłem tego jeszcze w Javie 8. Czy jest taka funkcja w JDK Java 8? Lub alternatywnie coś równoważnego z zakresem takim jak [1..8] …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.