Poniższy kod przekształca listę obiektów na listę obiektów opcjonalnych. Czy istnieje elegancki sposób na to, używając strumieni Java 8?Konwertowanie listy obiektów na listę obiektów opcjonalnych w Javie
List<Object> originalList = Arrays.asList(new Object(), new Object());
List<Optional<Object>> convertedList = new ArrayList<>();
for (Object object : originalList) {
convertedList.add(Optional.of(object));
}
Próbowałem następujący fragment kodu.
List<Optional<Object>> convertedList = originalList.stream().map((o) -> Optional.of(o));
Jednak to daje następujący błąd kompilacji:
of(T) in Optional cannot be applied to (java.lang.Object)
to przy użyciu klasy java.util.Optional raczej niż jedną Guava.
Dzięki za odpowiedź. Zredukuję kod dla celów przykładu. Lista convertList będzie zawierała nieobecne wartości po tym w moim przypadku użycia, a element originalList nie zawiera wartości null. – kentsurrey
Chociaż polecam metodę ref do formy w postaci lambda, nie oszukuj się, że "unikasz tworzenia lambda" za pomocą formularza referencyjnego metody. Refs metod są konwertowane do interfejsów funkcjonalnych za pomocą tych samych maszyn, co lambdas. Ale decyzje te powinny być podejmowane na podstawie czytelności kodu/łatwości konserwacji 99,999% czasu, więc powinieneś po prostu iść z tym, co jest bardziej czytelne - co jest na ogół metodą ref. –