Verwenden Sie dieses Tag für Fragen zu Java 8, Version 8 (interne Nummer 1.8) der Java-Plattform, die am 18. März 2014 veröffentlicht wurde. In den meisten Fällen sollten Sie auch das Java-Tag angeben.
Standardmethoden sind ein schönes neues Tool in unserer Java-Toolbox. Ich habe jedoch versucht, eine Schnittstelle zu schreiben, die eine defaultVersion der toStringMethode definiert. Java sagt mir, dass dies verboten ist, da in deklarierte Methoden java.lang.Objectmöglicherweise nicht defaultbearbeitet werden. Warum ist das so? Ich weiß, dass es die Regel "Basisklasse gewinnt …
Google Guava hat ein Prädikat, das immer zurückgibttrue . Hat Java 8 etwas Ähnliches Predicate? Ich weiß, ich könnte es gebrauchen (foo)->{return true;}, aber ich möchte etwas Vorgefertigtes, analog zu Collections.emptySet().
Ich habe eine alte Anwendung mit Java 7 geschrieben. Sie läuft gut in einer Java 8 JRE. Ich habe nicht vor, den Code neu zu schreiben, um die Java 8-Funktionen nutzen zu können. Gibt es einen technischen Vorteil beim Upgrade des kompilierten Codes auf das neueste Java 8 JDK? Der …
Ich habe ein Problem mit dem Stream von Java 8 für jeden Versuch, mit dem nächsten Element in der Schleife fortzufahren. Ich kann den Befehl nicht so einstellen continue;, return;funktioniert nur, aber in diesem Fall verlassen Sie die Schleife. Ich muss mit dem nächsten Element in der Schleife fortfahren. Wie …
Warum tut ZonedDateTime now = ZonedDateTime.now(); System.out.println(now.withZoneSameInstant(ZoneOffset.UTC) .equals(now.withZoneSameInstant(ZoneId.of("UTC")))); ausdrucken false? Ich würde erwarten, dass beide ZonedDateTimeInstanzen gleich sind.
Ich habe diesen einfachen Code: DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss.SSSSSS Z"); LocalDateTime.now().format(FORMATTER) Dann bekomme ich folgende Ausnahme: 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) Wie kann ich dieses Problem beheben?
Haben Lambda-Ausdrücke eine andere Verwendung als das Speichern von Codezeilen? Gibt es spezielle Funktionen von Lambdas, die Probleme lösten, die nicht einfach zu lösen waren? Die typische Verwendung, die ich gesehen habe, ist die, anstatt dies zu schreiben: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer …
Ich möchte einen Java 8-Stream duplizieren, damit ich zweimal damit umgehen kann. Ich kann collectals Liste und neue Streams daraus bekommen; // doSomething() returns a stream List<A> thing = doSomething().collect(toList()); thing.stream()... // do stuff thing.stream()... // do other stuff Aber ich denke, es sollte einen effizienteren / eleganteren Weg geben. …
Wie erhalte ich das erste Element, das einem Kriterium in einem Stream entspricht? Ich habe es versucht, aber es funktioniert nicht this.stops.stream().filter(Stop s-> s.getStation().getName().equals(name)); Dieses Kriterium funktioniert nicht. Die Filtermethode wird in einer anderen Klasse als Stop aufgerufen. public class Train { private final String name; private final SortedSet<Stop> stops; …
Ich kann den Unterschied zwischen thenApply() und nicht verstehen thenCompose(). Könnte jemand einen gültigen Anwendungsfall bereitstellen? Aus den Java-Dokumenten: thenApply(Function<? super T,? extends U> fn) Gibt eine neue zurück CompletionStage, die, wenn diese Stufe normal abgeschlossen ist, mit dem Ergebnis dieser Stufe als Argument für die angegebene Funktion ausgeführt wird. …
Ich habe bereits mehrere Java 8-Tutorials gelesen. Im Moment bin ich auf folgendes Thema gestoßen: Unterstützt Java Currying? Hier sehe ich folgenden Code: IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); Ich verstehe, dass dieses Beispiel 2 Elemente summiert, aber ich kann die Konstruktion nicht verstehen: a …
Bis Java 7 gab es im JVM-Speicher einen Bereich namens PermGen , in dem JVM seine Klassen behielt . In Java 8 wurde es entfernt und durch einen Bereich namens Metaspace ersetzt . Was sind die wichtigsten Unterschiede zwischen PermGen und Metaspace? Der einzige Unterschied, den ich kenne, ist, dass …
Insbesondere habe ich TabPane und möchte wissen, ob es ein Element mit einer bestimmten ID enthält. Also möchte ich dies mit Lambda-Ausdruck in Java tun: boolean idExists = false; String idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } }
Ich habe mit der neuen Datums- / Uhrzeit-API gespielt, aber als ich diese ausführte: 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); } } Es wirft: 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 …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.