Pytania otagowane jako java8

Java 8 odnosi się do najnowszej wersji platformy Java.

10
Dlaczego warto korzystać z opcji Opcjonalne w Javie 8+ zamiast tradycyjnych sprawdzania wskaźnika zerowego?
Niedawno przenieśliśmy się na Javę 8. Teraz widzę aplikacje zalane Optionalobiektami. Przed Java 8 (styl 1) Employee employee = employeeServive.getEmployee(); if(employee!=null){ System.out.println(employee.getId()); } Po Javie 8 (styl 2) Optional<Employee> employeeOptional = Optional.ofNullable(employeeService.getEmployee()); if(employeeOptional.isPresent()){ Employee employee = employeeOptional.get(); System.out.println(employee.getId()); } Nie widzę żadnej wartości dodanej, Optional<Employee> employeeOptional = employeeService.getEmployee();gdy sama usługa …
110 java  java8 

5
Dlaczego do interfejsów w Javie 8 dodano domyślne i statyczne metody, skoro mieliśmy już klasy abstrakcyjne?
W Javie 8 interfejsy mogą zawierać zaimplementowane metody, metody statyczne i tak zwane metody „domyślne” (których klasy implementujące nie muszą zastępować). W mojej (prawdopodobnie naiwnej) opinii nie było potrzeby naruszania takich interfejsów. Interfejsy zawsze były umową, którą musisz wypełnić, a jest to bardzo prosta i czysta koncepcja. Teraz jest to …


3
Dlaczego w klasach Java 8 java.time brakuje metody getMillis ()?
Java 8 ma zupełnie nową bibliotekę dat i godzin w pakiecie java.time, co jest bardzo mile widziane dla każdego, kto musiał wcześniej używać JodaTime lub miał problemy z tworzeniem własnych metod pomocniczych przetwarzania daty. Wiele klas w tym pakiecie reprezentuje znaczniki czasu i mają metody pomocnicze, takie jak getHour()uzyskiwanie godzin …
64 java  java8 

3
Czy korzystanie ze składni odwołania do metody zamiast składni lambda w Javie 8 wiąże się z większą wydajnością?
Czy odniesienia do metod pomijają obciążenie owijarki lambda? Czy mogą w przyszłości? Zgodnie z samouczkiem Java na temat metod : Czasami ... wyrażenie lambda robi tylko wywołanie istniejącej metody. W takich przypadkach często łatwiej jest odnieść się do istniejącej metody według nazwy. Odwołania do metod umożliwiają to; są to zwarte, …

6
Obejście dla sprawdzonych wyjątków Java
Bardzo doceniam nowe funkcje Java 8 dotyczące lambd i interfejsów metod domyślnych. Nadal jednak nudzą mnie sprawdzone wyjątki. Na przykład, jeśli chcę tylko wymienić wszystkie widoczne pola obiektu, chciałbym po prostu napisać: Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); Ponieważ jednak getmetoda może zgłosić sprawdzony wyjątek, co nie jest zgodne z Consumerumową …

3
Dlaczego powinienem używać „operacji funkcjonalnych” zamiast pętli for?
for (Canvas canvas : list) { } NetBeans sugeruje użycie „operacji funkcjonalnych”: list.stream().forEach((canvas) -> { }); Ale dlaczego jest to preferowane ? Jeśli tak, to trudniej jest je przeczytać i zrozumieć. Dzwonisz stream(), a następnie forEach()używasz wyrażenia lambda z parametrem canvas. Nie rozumiem, jak to jest ładniejsze niż forpętla w …

3
Czy to antipattern, aby użyć peek () do zmodyfikowania elementu strumienia?
Załóżmy, że mam strumień Rzeczy i chcę je „wzbogacić” w połowie strumienia, mogę peek()to zrobić, np .: streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); Załóżmy, że mutowanie Rzeczy w tym punkcie kodu jest poprawnym zachowaniem - na przykład thingMutatormetoda może ustawić pole „lastProcessor” na bieżący czas. Jednak peek()w większości kontekstów oznacza „patrz, ale nie dotykaj”. Używa …

1
Wnioskowanie typu w Javie 8
Czy wprowadzenie nowej notacji lambda (patrz np. Ten artykuł ) w Javie 8 będzie wymagało pewnego rodzaju wnioskowania typu? Jeśli tak, to w jaki sposób nowy system typów wpłynie na język Java jako całość?

9
Dlaczego do sprawdzania wartości zmiennej używana jest opcjonalna preferencja?
Weź dwa przykłady kodu: if(optional.isPresent()) { //do your thing } if(variable != null) { //do your thing } O ile mogę stwierdzić, najbardziej oczywistą różnicą jest to, że Opcjonalne wymaga utworzenia dodatkowego obiektu. Jednak wiele osób zaczęło szybko przyjmować Opcjonalne. Jaka jest zaleta korzystania z opcji zamiast kontroli zerowej?
25 java  java8 

3
Dlaczego Optional.get () bez wywołania isPresent () jest zły, ale nie iterator.next ()?
Korzystając z nowego interfejsu API strumieni Java8 w celu znalezienia jednego konkretnego elementu w kolekcji, piszę taki kod: String theFirstString = myCollection.stream() .findFirst() .get(); Tutaj IntelliJ ostrzega, że ​​wywoływana jest metoda get () bez uprzedniego sprawdzenia isPresent (). Jednak ten kod: String theFirstString = myCollection.iterator().next(); ... nie daje ostrzeżenia. Czy …
23 java8 

1
Czy ma sens mierzenie zasięgu warunkowego dla kodu Java 8?
Zastanawiam się, czy pomiar pokrycia kodu warunkowego przez obecne narzędzia dla Java nie jest przestarzały od czasu pojawienia się Java 8. Z Java 8 użytkownika Optionali Streamczęsto możemy uniknąć kodu rozgałęzień / pętle, co sprawia, że łatwo dostać bardzo wysoki zasięg bez warunkowego testowanie wszystkich możliwych ścieżek wykonania. Porównajmy stary …

3
Czy rozsądnie jest zwracać strumienie wszędzie tam, gdzie normalnie zwracamy kolekcje?
Podczas opracowywania mojego interfejsu API, który nie jest powiązany z żadnym starszym kodem, często piszę metody, które są czysto strumieniowe przesyłaniem strumieniowym zakończone przez zbieranie wyników. Jak ten: ImmutableSet<T> deriveSomethingMeaningfulFromPrivateState() { return myPrivateThingies.stream() .map(this::ownerOfThing) .map(Owner::socialStatus) .filter(SocialStatus::isHeAFineMatey) .collect(MyCustomCollectors.toImmutableSet()); } Teraz większość klientów tej klasy zwykle potrzebuje kolekcji (w tym przypadku ImmutableSet) …


1
Czy Collection.stream (). Filter (). ForEach () jest nieefektywny w porównaniu ze standardem dla każdej pętli?
IntelliJ IDEA polecił mi właśnie teraz, aby zastąpić następującą pętlę dla każdej z wywołań Java 8 „forEach”: for (Object o : objects) { if (o instanceof SomeObject) { doSomething(); } } Zalecane połączenie wygląda następująco: objects.stream().filter(o -> o instanceof SomeObject).forEach(o -> doSomething()); O ile nie rozumiem, jak działa podstawowa funkcjonalność …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.