2011-01-21 7 views
15

इसे अच्छे लिखने का सामना करना पड़ता है स्ट्रिंग संदेश एक उबाऊ गन्दा कोर है जिसे करने की आवश्यकता है क्योंकि यह वास्तव में डीबगर या लॉगिंग में कीटनाशक के लिए सहायक हो सकता है।आपके द्वारा उपयोग या देखे जाने वाले सबसे अच्छे टूस्टिंग बिल्डर क्लास क्या हैं? यह क्या अच्छा लगा

क्या सुविधाओं कर आप की तरह या इच्छा इस तरह के एक सहायक में होना चाहिए ...

  • डंपिंग गुण डब्ल्यू/लेबल आना चाहिए।

    नाम = सांसद देश = ऑस्ट्रेलिया ...

  • मूल्यों है कि कुछ डिफ़ॉल्ट वैकल्पिक रूप से छोड़ दिया जाना चाहिए।

    • 0 या शून्य के गुणों के बहुत सारे प्रिंट प्रिंटिंग नहीं हैं।
    • यदि आप कोई लेबल सेट करते हैं और मान शून्य है तो इसमें शामिल नहीं है।
  • लेबल और मूल्य के बीच सेपरेटर को अद्यतन करने योग्य होना चाहिए और इसे जोड़े जाने पर लेबल और मानों के बीच ऑटो डाला जाना चाहिए।

  • इसे अपनी पसंद के विभाजक को भी ऑटो डालना चाहिए।

    यदि आप किसी सरणी को शामिल करते समय मूल्यों के बीच जो भी स्थान लेते हैं, तो यह हो।

  • इसे स्वत: उद्धरण स्ट्रिंग मान चाहिए ... क्योंकि यह जानना महत्वपूर्ण है कि स्ट्रिंग कहां शुरू होती है और समाप्त होती है।

    * नाम = सांसद राज्य = "न्यू साउथ वेल्स"

  • जब एक सूची, नक्शा या सेट तार के हवाले से, सेट विभाजक आदि का उपयोग कर सम्मान किया जाना चाहिए के बारे में नियम जोड़ा जाता है। कृपया संग्रह को डंप न करें .toString()।

मैं someting में कुछ अन्य लोगों के मैं में सुधार कर रहा हूँ आप अपने खुद के विचारों को सूचीबद्ध कर सकते हैं है, टिप्पणियों आदि

new ToStringBuilder() 
    .setLabelValueSeparator('=') 
    .label("name") 
    .value(Country.AUSTRALIA) // -> returns "Australia" without the quotes. 
    .label("day of death") 
    .value(null) // 
    .label("numbers") 
    .valueSeparator(","); 
    .value(Arrays.asList(1, 2, 3) 
    .build(); 

"नाम =" ऑस्ट्रेलिया "संख्या में पाठ्यक्रम परिणाम की इच्छा = 1, 2 , 3;

उत्तर

9

मैं बस अपना आईडीई का उपयोग मेरे लिए toString उत्पन्न करने के लिए अगर मैं कोड बदलने के लिए, मैं विधि हटा सकते हैं और पुन: उत्पन्न

+1

ये लेकिन उत्पन्न toStrings चूसना, वे सब कमजोरियों क्ष में वर्णित है। –

+0

मैं इस तथ्य की ओर इशारा कर रहा था कि यह इतना महत्वपूर्ण नहीं है। 'toString()' कक्षा के राज्य को देखने की अनुमति देने के लिए बस एक डीबग तंत्र है। डेटा प्रस्तुति कुछ प्रकार के बाहरी स्वरूपक द्वारा की जानी चाहिए। यदि आप किसी और चीज़ के लिए 'toString()' का उपयोग कर रहे हैं, तो मुझे लगता है कि आपको अपना डिज़ाइन गलत मिला है। –

+3

आप जेनरेट करने के लिए जेनरेट करने से बेहतर कर सकते हैं, तो उस बिट को आगे क्यों न जाएं और उचित क्षेत्र को लिखना जो हर क्षेत्र को संभवतः डंप करने के बजाय सार्थक है। इतनी कमजोरियां हैं कि यह दृष्टिकोण मजाकिया नहीं है। कल्पना करें कि String.toString ने इस दृष्टिकोण को लिया था, तो हमारे पास अलग-अलग वर्ण डंप के साथ एक बदसूरत char [] डंप होगा। –

20

Apache ToStringBuilder ख से बाहर एक सभ्य implenentation है।। बैल:

@Override 
public String toString() { 
    return ToStringBuilder.reflectionToString(this); 
} 

मैं वास्तव में कैसे इसके उत्पादन थोड़ा खूबसूरत होने के लिए प्राप्त करने के लिए पर अभी देख रहा हूँ। ReflectionStringBuilder कुछ और अनुकूलन प्रदान करता प्रतीत होता है। विशेष रूप से मुझे यह पसंद:

@Override 
public String toString() { 
    StandardToStringStyle style = new StandardToStringStyle(); 
    style.setFieldSeparator(", "); 
    style.setUseClassName(false); 
    style.setUseIdentityHashCode(false); 

    return new ReflectionToStringBuilder(this, style).toString(); 
} 

उत्पादन इस तरह दिखता है:

[[email protected], age=16, createdDate=<null>, favoriteColor=blue, id=2] 
संबंधित मुद्दे

 संबंधित मुद्दे