Java 8'i 6 aydan daha uzun bir süredir kullandıktan sonra, yeni API değişikliklerinden oldukça memnunum. Hala emin olmadığım bir alan ne zaman kullanılacağıdır Optional. Bir şey olabileceği her yerde kullanmak istemek arasında sallanıyorum nullve hiçbir yerde.
Kullanabileceğim çok fazla durum var gibi görünüyor ve faydalar (okunabilirlik / boş güvenlik) eklediğinden veya yalnızca ek yüke neden olup olmadığından asla emin değilim.
Bu yüzden birkaç örneğim var ve topluluğun Optionalfaydalı olup olmadığı konusundaki düşünceleriyle ilgileniyorum .
1 - Genel bir yöntem olarak, yöntemin geri dönebileceği tür null:
public Optional<Foo> findFoo(String id);
2 - Param olabileceği zaman bir yöntem parametresi olarak null:
public Foo doSomething(String id, Optional<Bar> barOptional);
3 - Fasulyenin isteğe bağlı bir üyesi olarak:
public class Book {
private List<Pages> pages;
private Optional<Index> index;
}
4 - Giriş Collections:
Genel olarak düşünmüyorum:
List<Optional<Foo>>
bir şey ekler - özellikle değerlerin filter()kaldırılması nullvb. için kullanılabilir, ancak Optionalkoleksiyonlar için iyi bir kullanım alanı var mı?
Kaçırdığım vakalar var mı?
.filter(Optional::absent)"boş değerler"
getOrDefault()mu?
Map<Character, String>. Hiçbir ikamesi varsa bunu kullanabilirsiniz:Optional.ofNullable(map.get(c)).orElse(String.valueOf(c)). Ayrıca İsteğe bağlı Guava çalındı ve çok daha güzel bir sözdizimi olduğunu unutmayın:Optional.fromNullable(map.get(c)).or(String.valueOf(c));