जावा "परम" विधि हस्ताक्षर में?


112

C # में, यदि आप किसी विधि को मापदंडों की अनिश्चित संख्या के लिए चाहते हैं, तो आप विधि हस्ताक्षर में अंतिम पैरामीटर बना सकते हैं paramsताकि विधि पैरामीटर एक सरणी की तरह दिखे लेकिन हर किसी को उस प्रकार के कई मापदंडों को पारित करने की विधि का उपयोग करने की अनुमति देता है जैसा कि कॉलर चाहता है।

मुझे पूरा यकीन है कि जावा समान व्यवहार का समर्थन करता है, लेकिन मुझे पता नहीं है कि यह कैसे करना है।

जवाबों:


194

जावा में इसे varargs कहा जाता है , और वाक्यविन्यास एक नियमित पैरामीटर की तरह दिखता है, लेकिन टाइप के बाद एक दीर्घवृत्त ("...") के साथ:

public void foo(Object... bar) {
    for (Object baz : bar) {
        System.out.println(baz.toString());
    }
}

Vararg पैरामीटर चाहिए हमेशा होना पिछले विधि हस्ताक्षर में पैरामीटर, और जैसे कि आप (जैसे कि प्रकार की एक सरणी प्राप्त पहुँचा जा सकता है Object[]इस मामले में)।


3
धन्यवाद, मैंने कुछ और देख रहा था, और सवाल का जवाब देने के लिए यहां आ रहा था।
उमर कोहेजी

11

यह जावा में ट्रिक करेगा

public void foo(String parameter, Object... arguments);

आप तीन अंक जोड़ने के लिए ...और varagrपैरामीटर विधि के हस्ताक्षर में पिछले होना चाहिए।


3

जैसा कि पिछले उत्तरों पर लिखा गया है, यह ( ... ) के varargsसाथ घोषित किया गया हैellipsis

इसके अलावा, आप या तो मान प्रकार और / या संदर्भ प्रकार या दोनों मिश्रित (Google Autoboxing ) पास कर सकते हैं। इसके अतिरिक्त आप विधि पैरामीटर को सरणी के रूप में उपयोग कर सकते हैं जैसा कि printArgsAlternateनीचे दी गई विधि के साथ दिखाया गया है।

डेमो कोड

public class VarargsDemo {

    public static void main(String[] args) {
        printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
        printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
    }

    private static void printArgs(Object... arguments) {
        System.out.print("Arguments: ");
        for(Object o : arguments)
            System.out.print(o + " ");

        System.out.println();
    }

    private static void printArgsAlternate(Object... arguments) {
        System.out.print("Arguments: ");

        for(int i = 0; i < arguments.length; i++)
            System.out.print(arguments[i] + " ");

        System.out.println();
    }

}

उत्पादन

Arguments: 3 true Hello! true 25.3 a X 
Arguments: 3 true Hello! true 25.3 a X 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.