2010-06-06 18 views
6

हे सब, मैं अपनी खुद की लॉगर कक्षा में स्ट्रिंग.फॉर्मैट() विधि को लपेटना चाहता हूं। मैं अपनी विधि से String.format() में तर्कों को पारित करने का तरीका नहीं समझ सकता।जावा स्ट्रिंग.फॉर्मैट() को कैसे लपेटें?

public class Logger 
{ 
    public static void format(String format, Object... args) 
    { 
     print(String.format(format, args)); // <-- this gives an error obviously. 
    } 

    public static void print(String s) 
    { 
     System.out.println(s); 
    } 
} 
+7

और यह त्रुटि क्या होगी? –

+0

हाँ। त्रुटि क्या है? मुझे यह ठीक लग रहा है। –

+0

त्रुटि शायद आती है यदि आप एक से अधिक तर्क – eugeneK

उत्तर

4

आपका कोड काम करता है। Vararg vararg के एक वाक्य रचनात्मक मुक्केबाजी बस कम या कम है।

दूसरे शब्दों में, निम्नलिखित दो बयान वास्तव में समान हैं:

String.format("%s %s", "Foo", "Bar") 
String.format("%s %s", new Object[] {"Foo", "Bar"}) 

आपका अपने कोड में argsहमेशा एक Object[] हो जाएगा, कोई फर्क नहीं पड़ता अगर आप 0, 1, 2 या किसी अन्य संख्या तर्कों का

ध्यान दें कि यह संकलन समय पर निर्धारित होता है और वस्तु के स्थिर प्रकार पर लग रहा है है, इसलिए String.format("%s %s", (Object)new Object[] {"Foo", "Bar"}) कारण होगा सरणी एक वस्तु के रूप में इलाज किया जाना है (और इस मामले में कारण एक रनटाइम त्रुटि फेंक दिया करने के लिए) ।

यदि आपको अभी भी अपने कोड में समस्या है, तो कृपया जांचें कि आपका उदाहरण वास्तव में आपके कोड के काम के समान है।

1

मुझे लगता है कि यह काम करेगा:

प्रिंट (String.Format (प्रारूप, (ऑब्जेक्ट []) args));

आशा है कि यह काम करता है। मैंने इसका परीक्षण नहीं किया है। शुभकामनाएं

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