Boşlukları kontrol etmeniz gerekmez. Eğer tüm işlemler atlanacak boş akışı varsa:
Stream.of("hello")
.filter(e => "world".equals(e)) // empties the stream
.foreach(System.out::println); // no NullPointer, no output
durum işleme eşleştiricisindeki mümkündür:
List<Class<?>> classes = Stream.of("java.lang.Object", "java.lang.Integer", "java.lang.String")
.map(className -> {
try {
return Class.forName(className);
} catch (Exception e) {
throw new YourRuntimeException();
}
})
.collect(Collectors.toList());
özel durumlar göz ardı etmek istiyorsanız, o zaman Optional
s eşlemek öneririm.
List<Class<?>> classes = Stream.of("java.lang.Object", "java.lang.Integer", "java.lang.String")
.map(className -> {
try {
return Optional.of(Class.forName(className));
} catch (Exception e) {
return Optional.<Class<?>>empty();
}
})
.filter(Optional::isPresent) // ignore empty values
.map (Optional::get) // unwrap Optional contents
.collect(Collectors.toList());
da java 8 akışları ile birlikte daha ayrıntılı bir tartışma hakkında Class.forName
için How can I throw CHECKED exceptions from inside Java 8 streams? bir göz atınız.
Ne? Boşsa, hiçbir şey uygulanmayacaktır. Yakalamayı dene? Nerede? Niye ya? –
"akışta boş liste" ne demek istiyorsun? Akışınız Dize değil, Liste'dir. "Akıştaki boş dize" mi demek istediniz? – Bohemian