2011-04-02 16 views

cevap

36

ObjectUtils.toString(object) gelen commons-lang. - Sadece debug ve günlük tutma toString() kullanmak

return obj == null ? "" : obj.toString(); 

Sadece bir not: kod aslında bir çizgi vardır. toString() biçimine güvenmeyin.

+2

Kabul bildirmektedir sonra Peter Lawrey cevabını gördüm. toString() insanlar için değil, bilgisayarlar içindir. –

+10

yöntem 'ObjectUtils.toString (nesne)' 'java.util.Objects.toString (Object) lehine Java 7 beri kullanım dışı kalmıştır' ve gelecek sürümlerde kaldırılacaktır. Bununla birlikte, söz konusu yöntemin boş referanslar için "boş" değerini döndüreceğini, ancak bu yöntemin Dize döndürüp boş olduğunu unutmayın. Davranışını korumak için java.util.Objects.toString (myObject, "") 'yi de kullanabilirsiniz. –

3

String.valueOf(o) döndürür.

başka biri olabilir String s = o == null? "default" : o.toString()

68

boş denetimi yapmak ve nesne null ise "null" dönecektir String sınıfında statik valueOf yöntemi:

String stringRepresentation = String.valueOf(o); 
+1

Sadece googled zaman ne arıyordum - teşekkürler! "Boş" tamamsa –

+1

, ayrıca 'Dize stringRepresentation = "" + o kullanabilirsiniz;' ... – jan

2
bir null değerine bunu istediğinize bağlı

ama sadece bu

Object o = 
String s = ""+o; 

Bu println ve dize için varsayılan davranış eklemek yapabileceğim vb

+0

Ancak, null ise bu "null" değerini döndürür; bu, sorunun ne hakkında olduğu gibi görünmez. – jan

+0

@jan haklı olabilirsiniz. '' 'n'n'n'nın davranışı, soruda tanımlanmamıştır. Ancak, eğer uygunsa, daha basittir. –

+0

Bu, örneğin bir çeşit günlük çıktısına yazdığınız takdirde gitmek için iyi bir yoldur. – mykolaj

2

almak istiyorum gibi görünüyor o bir NULL olmadığında bir String. Ama sizinki gibi kodlama yapıyorsanız, değişken s'ye erişemiyorsunuz (eğer if ifadesi kapsamında biliyorsunuz).

49

Objects.toString(Object o, String nullDefault)

Örnek deneyin:

import java.util.Objects; 

Object o1 = null; 
Object o2 = "aString"; 
String s; 

s = Objects.toString(o1, "isNull"); // returns "isNull" 
s = Objects.toString(o2, "isNull"); // returns "aString" 
+1

Sorunun yazarı kontrolünden daha basit mi? –

+1

Sanırım içeriğe bağlı. Sıfır güvenli bir tek ifade olarak, uygun bir şekilde kullanılmışsa bir parça kodu daha kısa ve daha kolay okunabilir hale getirebilir. –

+6

Not: Bu yalnızca Java 7 –

4

referans Bozho Ocak-59 Güncelleme cevap:

ObjectUtils.toString(object) gelen commons-lang.

return obj == null ? "" : obj.toString(); 

Ancak Apache Commons bu yöntem artık sürümü 3.2 (commons/lang3) beri kaldırılmış: Kod aslında bir çizgi vardır. Onların amacı Jdk7'de mevcut olan tüm yöntemleri kaldırmaktı. Yöntem, Java 7 numaralı telefondan java.util.Objects.toString(Object) ile değiştirilmiştir ve muhtemelen daha sonraki sürümlerde kaldırılacaktır. Bazı tartışmalardan sonra henüz kaldırmamışlar (şu anda 3.4) ve hala kullanımdan kaldırılmış bir yöntem olarak mevcut.

Ancak, söz konusu java 7+ yönteminin boş başvurular için "null" değerini döndüreceğini unutmayın.davranış kullanacağım

java.util.Objects.toString(myObject, "") 
3

korumak için aşağıdaki şekilde java Opsiyonel 8 kullanabilirsiniz:

String s = Optional.ofNullable(o).map(Object::toString).orElse("null"); 
+1

için() 'Optional.ofNullable (O) .orElse ("boş") toString kullanarak harita' tarafından oluşturulan bir ikinci 'Optional'()' yükünü önlemek için, bunun yerine '.. –

+0

Evet da mümkündür – George

1
import java.util.Objects; 
Objects.toString(object, "") 

Basit ve 0 çalışma zamanı özel :)

+0

veya kullanımı: 'Objects.toString (nesne)' 'wihtout nullDefault' parametresi. Bu yöntem 'object.toString()' veya 'null' döndürür – Ralph

İlgili konular