2010-02-24 19 views
8

का उपयोग करने के लिए यह बहुत बुनियादी लग सकता है ... क्या कोई toString() विधि के उपयोग की व्याख्या कर सकता है और प्रभावी ढंग से इसका उपयोग कब कर सकता है?जब toString() विधि

Google पर एक खोज किया है लेकिन कोई अच्छा संसाधन नहीं मिला।

+2

जो भाषा में? –

+0

जावा में ... और एक सी ++ कोडबेस में भी मैं काम कर रहा हूं, डीबगिंग के लिए उपयोग किए जाने वाले टूस्ट्रिंग फ़ंक्शन का एक कस्टम कार्यान्वयन है .. –

+0

यहां एक लेख है जो दिखाता है कि स्ट्रिंग विधि का उपयोग कैसे और कब करें। Http: // coffeewithcode .com/2011/11/03/toString-विधि-ऑफ-वस्तु श्रेणी में जावा / –

उत्तर

22

अधिकांश भाषाओं में, toString या समकक्ष विधि बस गारंटी देता है कि किसी वस्तु को टेक्स्ट रूप से प्रदर्शित किया जा सकता है।

यह विशेष रूप से लॉगिंग, डिबगिंग या किसी अन्य परिस्थिति के लिए उपयोगी है जहां आपको किसी स्ट्रिंग के रूप में सामना करने वाली किसी भी वस्तु को प्रस्तुत करने में सक्षम होना चाहिए।

ऑब्जेक्ट्स अक्सर कस्टम toString व्यवहार को लागू करते हैं ताकि विधि वास्तव में आपको ऑब्जेक्ट इंस्टेंस के बारे में कुछ बता सके। उदाहरण के लिए, Person क्लास इसे "अंतिम नाम, पहला नाम" वापस करने के लिए ओवरराइड कर सकता है जबकि Date कक्षा कुछ डिफ़ॉल्ट सेटिंग (जैसे वर्तमान उपयोगकर्ता इंटरफ़ेस संस्कृति) के अनुसार स्वरूपित दिनांक दिखाएगी।

1

नेट या जावा मान लिया जाये:

सामान्य तौर पर, आप ToString() ओवरलोड जब आप अपने वर्ग के एक शाब्दिक प्रतिनिधित्व चाहते हैं (यह मानते हुए इसे अपने वर्ग के लिए समझ में आता है) चाहिए।

1

आप अपने ऑब्जेक्ट के कुछ सार्थक पाठ प्रस्तुतिकरण प्रदान करने के लिए इसे ओवरराइड करके कक्षा में स्ट्रिंग() का उपयोग कर सकते हैं।

उदाहरण के लिए आप पहले और अंतिम नाम को वापस करने के लिए एक व्यक्ति वर्ग पर toString() को ओवरराइड कर सकते हैं।

0

स्ट्रिंग के लिए स्ट्रिंग में डेटा प्रकार बदलने की आवश्यकता होने पर स्ट्रिंग का उपयोग किया जाना चाहिए। Int जैसे प्रकारों के लिए निर्मित और ऐसे में स्ट्रिंग प्रस्तुतियां आप अपेक्षा करते हैं। यानी

int i = 5; 
    string s = i.ToString(); //s now equals "5" 

आप सबसे जटिल प्रकार के लिए चरित्र स्ट्रिंग "5" और सभी उपयोगकर्ता बनाया प्रकार आप ToString विधि ओवरलोड करने की जरूरत है देता है या आप केवल क्लास का नाम मिल जाएगा। स्ट्रिंग करने के लिए आप अपनी खुद की वस्तुओं के साथ .net में जटिल बनाने का निर्माण करने की अनुमति देते हैं। आप अपने स्वयं के प्रकारों का उपयोग करने में लचीलापन देने के लिए डेटाटाइम क्लास जैसे जटिल स्वरूपक प्रदान कर सकते हैं।

2
  1. आप एक वस्तु प्रदर्शित करना चाहते हैं और यह जांचना नहीं चाहते कि यह पहले शून्य है या नहीं।
  2. आप स्ट्रिंग्स को जोड़ना चाहते हैं और विशेष विशेषता के बारे में सोच नहीं सकते हैं, केवल प्रोग्रामर को डिफ़ॉल्ट प्रदान करें।
इस प्रकार

:

out.println("You are " + user); 

प्रदर्शित करेगा "तुम अशक्त हैं" या "आप जेम्स रहे हैं" उपयोगकर्ता इस (बराबर) उदाहरण के लिए अशक्त या toString प्रदर्शित करता है "जेम्स" है अगर।

2

ऐसी कई स्थितियां हैं जिनमें से किसी एक वर्ग की टूस्ट्रिंग विधि को ओवरराइड करना चाहती है (जिनमें से अधिकांश मौजूदा उत्तरों में पहले से ही उल्लेख किए गए हैं), लेकिन सबसे सामान्य परिस्थितियों में से एक जिसमें मुझे स्पष्ट रूप से कॉल करने की आवश्यकता है स्ट्रिंगबिल्डर का उपयोग स्ट्रिंग बनाने के लिए करते समय ऑब्जेक्ट पर होता है।

public String createString(final String str) { 
    final StringBuilder sb = new StringBuilder(str); 
    sb.append("foo"); 
    sb.append("bar"); 
    return sb.toString(); 
} 
0

toString() इसलिए इस समस्या को आप toString ओवरराइड करने के लिए की जरूरत को दूर करने, हेक्साडेसिमल पते से बचने के लिए इस्तेमाल किया जा सकता() तो आप डेटा के मूल पाठ स्वरूप मिल जाएगा।

0

जब आप संदर्भ चर मुद्रित करते हैं तो निम्न कार्य होगा।

  • यदि संदर्भ चर में शून्य है तो शून्य मान प्रदर्शित किया जाएगा।
  • यदि संदर्भ चर में किसी ऑब्जेक्ट का पता होता है तो toString() विधि स्वचालित रूप से JVM द्वारा कॉल की जाएगी।

डिफ़ॉल्ट रूप से Object.class की toString() प्रिंट होगा:

className @ HexadecimalOfHashCode

आप कुछ सार्थक स्ट्रिंग प्रदर्शित करने के लिए अपनी कक्षा में इस विधि ओवरराइड कर सकते हैं। आमतौर पर toString() विधि एक object.This विधि की सामग्री को मुद्रित करने के लिए प्रयोग किया जाता है पहले से ही कई जावा में निर्मित आदि String तरह वर्ग, StringBuffer, integer में ओवरराइड की गई है

0

इसका उपयोग करके हम फ़ील्ड मान जो हम प्रारंभ प्रदर्शित करने के लिए कन्स्ट्रक्टर के माध्यम से और किसी भी गेटर का उपयोग किये बिना क्या प्रदर्शित करना है।

import Test.Date; 
public class Employ { 

private String firstname; 
private String lastname; 
private Date DOB; 
private Date DOH; 
public Employ(String name,String lastname,Date DOB,Date DOH) 
{ 
    this.firstname=name; 
    this.lastname=lastname; 
    this.DOB=DOB; 
    this.DOH=DOH; 

} 

    public String toString(){ 

    return String.format("%s %s Birthday %s Hired %s",firstname,lastname,DOB,DOH);  
     } 
public static void main (String args[]) 
{ 
    Date dob= new Date(12,3,1992); 
    Date doh= new Date(10,6,2005); 

    Employ em= new Employ("BOB", "Wrigh", dob,doh); 

    System.out.println(em); 

} 

}

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