Als «java8» getaggte Fragen

Java 8 bezieht sich auf die neueste Version der Java-Plattform.

10
Warum sollte Optional in Java 8+ anstelle von herkömmlichen Nullzeigerprüfungen verwendet werden?
Wir sind kürzlich zu Java 8 übergegangen. Jetzt sehe ich Anwendungen, die mit OptionalObjekten überflutet sind. Vor Java 8 (Style 1) Employee employee = employeeServive.getEmployee(); if(employee!=null){ System.out.println(employee.getId()); } Nach Java 8 (Style 2) Optional<Employee> employeeOptional = Optional.ofNullable(employeeService.getEmployee()); if(employeeOptional.isPresent()){ Employee employee = employeeOptional.get(); System.out.println(employee.getId()); } Ich sehe keinen Mehrwert, Optional<Employee> employeeOptional …
110 java  java8 

5
Warum wurden Schnittstellen in Java 8 Standardmethoden und statische Methoden hinzugefügt, als wir bereits abstrakte Klassen hatten?
In Java 8 können Schnittstellen implementierte Methoden, statische Methoden und sogenannte "Standard" -Methoden enthalten (die von den implementierenden Klassen nicht überschrieben werden müssen). Aus meiner (wahrscheinlich naiven) Sicht bestand keine Notwendigkeit, solche Schnittstellen zu verletzen. Schnittstellen waren schon immer ein Vertrag, den Sie erfüllen müssen, und dies ist ein sehr …


3
Warum fehlt in den Java 8 java.time-Klassen eine getMillis () -Methode?
Java 8 hat eine völlig neue Bibliothek für Datums- und Uhrzeitangaben im Paket java.time, die für alle sehr willkommen ist, die JodaTime zuvor verwenden mussten oder Probleme damit hatten, eigene Hilfsmethoden für die Datumsverarbeitung zu erstellen. Viele Klassen in diesem Paket stellen Zeitstempel dar und haben Hilfsmethoden getHour(), um Stunden …
64 java  java8 

3
Gibt es einen Leistungsvorteil bei der Verwendung der Methodenreferenzsyntax anstelle der Lambda-Syntax in Java 8?
Überspringen Methodenverweise den Overhead der Lambda-Hülle? Könnten sie in der Zukunft? Gemäß dem Java-Tutorial zu Methodenreferenzen : Manchmal ... ruft ein Lambda-Ausdruck nur eine vorhandene Methode auf. In diesen Fällen ist es oft klarer, die vorhandene Methode namentlich zu bezeichnen. Mit Methodenreferenzen können Sie dies tun. Sie sind kompakte, leicht …

6
Problemumgehung für von Java überprüfte Ausnahmen
Ich schätze die neuen Java 8-Funktionen für Lambdas und Standardmethoden-Schnittstellen sehr. Trotzdem langweilen mich geprüfte Ausnahmen. Wenn ich zum Beispiel nur alle sichtbaren Felder eines Objekts auflisten möchte, möchte ich einfach Folgendes schreiben: Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); Da die getMethode jedoch möglicherweise eine aktivierte Ausnahme auslöst, die nicht mit …


3
Ist es ein Antipattern, ein Stream-Element mit peek () zu ändern?
Angenommen, ich habe einen Datenstrom von Dingen und möchte diese in der Mitte des Datenstroms "anreichern". peek()Dazu kann ich Folgendes verwenden : streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); Nehmen Sie an, dass das Mutieren der Dinge an dieser Stelle im Code korrekt ist - zum Beispiel das thingMutator Methode das Feld "lastProcessed" möglicherweise auf die …

1
Inferenz in Java 8 eingeben
Erfordert die Einführung der neuen Lambda-Notation (siehe z. B. diesen Artikel ) in Java 8 eine Art Typinferenz? Wenn ja, wie wird sich das neue Typsystem auf die Java-Sprache insgesamt auswirken?

9
Warum wird eine optionale Option verwendet, um die Variable auf Null zu prüfen?
Nehmen Sie die beiden Codebeispiele: if(optional.isPresent()) { //do your thing } if(variable != null) { //do your thing } Soweit ich das beurteilen kann, besteht der offensichtlichste Unterschied darin, dass für das optionale Objekt ein zusätzliches Objekt erstellt werden muss. Viele Menschen haben jedoch schnell begonnen, Optionals einzuführen. Was ist …
25 java  java8 

3
Warum ist Optional.get () ohne Aufruf von isPresent () schlecht, aber nicht iterator.next ()?
Wenn ich die neue Java8-Streams-API verwende, um ein bestimmtes Element in einer Sammlung zu finden, schreibe ich folgenden Code: String theFirstString = myCollection.stream() .findFirst() .get(); Hier warnt IntelliJ, dass get () aufgerufen wird, ohne vorher isPresent () zu überprüfen. Dieser Code: String theFirstString = myCollection.iterator().next(); ... gibt keine Warnung aus. …
23 java8 


3
Ist es eine vernünftige Sache, Streams überall dort zurückzugeben, wo wir normalerweise Sammlungen zurückgeben würden?
Während ich meine API entwickle, die an keinen Legacy-Code gebunden ist, schreibe ich häufig Methoden, bei denen es sich um reine Streams-Pipeline handelt, die durch das Sammeln der Ergebnisse beendet wird. Wie dieser: ImmutableSet<T> deriveSomethingMeaningfulFromPrivateState() { return myPrivateThingies.stream() .map(this::ownerOfThing) .map(Owner::socialStatus) .filter(SocialStatus::isHeAFineMatey) .collect(MyCustomCollectors.toImmutableSet()); } Die meisten Clients dieser Klasse benötigen normalerweise …

1
Übergabe einer Scala-Funktion an eine Java 8-Methode
Der folgende Scala-Code funktioniert und kann an eine Java-Methode übergeben werden, die eine Funktion erwartet. Gibt es einen saubereren Weg, dies zu tun? Hier ist mein erster Durchgang: 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, …

1
Ist es empfehlenswert, zwei Java 8-Standardmethoden in Bezug aufeinander zu implementieren?
Ich entwerfe eine Schnittstelle mit zwei ähnlichen Methoden: public interface ThingComputer { default Thing computeFirstThing() { return computeAllThings().get(0); } default List<Thing> computeAllThings() { return ImmutableList.of(computeFirstThing()); } } Etwa die Hälfte der Implementierungen berechnet immer nur eine Sache, während die andere Hälfte möglicherweise mehr berechnet. Hat dies einen Präzedenzfall in weit …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.