2015-07-03 32 views
7

Java 7 özelliklerinden geçiyordum ve java.util.Objects sınıfı hakkında konuştular. Anlıyorum başarısız Ben ne'java.util.Objects. *' Ne zaman kullanılır?

i ilave etti boş çek ve yerine OOP tarzı fonksiyonel gösterimi görebiliyordu

java.util.Objects.toString(foo) 
vs 
foo == null ? "":foo.toString() 

Tüm betwee işlevsel fark budur.

Neyi eksik? Objects.toString(foo) çağrılması

+0

Neden fonksiyonel bir fark var var için

String foo = (getFoo()==null) ? "null" : getFoo().toString() 

uyaran böcek? Daha net bir gösterim kendi başına bir fayda değil mi? –

+3

Asıl soru, bu yöntemin, tam olarak aynı olan Java 1.0'dan beri '' String.valueOf' 'olduğu gerçeğinden yola çıkılarak sunulmasıdır ('Objects.toString' basitçe çağırır). –

cevap

8

java.util.Objects.toString() temel avantajı kolayca yerine yeni bir yerel değişken (ya da kötü arama oluşturulmasına gerek daha null olabilecek bir dönüş değeri üzerinde kullanabilirsiniz olmasıdır işlev iki kez).

karşılaştırın

Foo f = getFoo(); 
String foo = (f==null) ? "null" : f.toString(); 

veya layık yaltaklanmak-ve Objects.toString tabanlı sürümü

String foo = Objects.toString(getFoo()); 
5

sadece boş çekler yapmak için hatırlamak ihtiyacını kaldırır ve öncelikle bir değişkende saklayarak (veya iki kez yöntemini çağırarak) olmadan yöntem dönüş değeri doğrudan (örneğin Objects.toString(getPossibleNullObject())) kullanabileceğiniz anlamına gelir.

Not Ancak yöntem aslında döndüren:

bir null bağımsız değişkeni için bir boş olmayan değişken için toString ve "null" çağrı sonucu

böylece aslında eşdeğerdir

:

"" n numaralı bir değer için
foo == null ? "null" : foo.toString(); 

ou bir nullDefault dönüş değeri geçer aşırı kullanabilirsiniz Objects.toString(foo, "")

İlgili konular