आइए निम्नलिखित उदाहरण लें:

public class Test {
    public void main(String[] args) {
        int[] someInts = {1, 2, 5};
        new Dummy(1, someInts, "Hello");    //works
        new Dummy(1, new int[] {1, 2, 5}, "Hello"); //works
        new Dummy(1, {1, 2, 5}, "Hello");   //fails
        new Dummy(1, [1, 2, 5], "Hello");   //fails
    }

    public class Dummy {
        Dummy(int someNumber, int[] someArray, String message) {

        }
    }
}

दोनों असफल लाइनों के लिए, एक्लिप्स कहता है: "कंस्ट्रक्टर टेस्ट। डमी (int, int, int, int, स्ट्रिंग) अपरिभाषित है"

सबसे पहले, मुझे समझ में नहीं आता कि यह सरणी को एक सरणी के रूप में कैसे पहचानता है (केवल असफल लाइनों में)।

दूसरे, मैं सरणी को सीधे कंस्ट्रक्टर में पास क्यों नहीं कर सकता, बल्कि इसे पारित करने के लिए एक चर बनाना होगा?

और तीसरा, क्या एक कंस्ट्रक्टर बनाने का एक तरीका है जो प्रश्न में उस रेखा की तरह कुछ लेता है, जिसका अर्थ है एक चर या new int[] {...} कथन के बिना?

यदि किसी को शीर्षक में इसे तैयार करने का एक बेहतर तरीका पता है, तो इसे सुधारने के लिए स्वतंत्र महसूस करें।

0
jaySon 29 नवम्बर 2015, 14:03

2 जवाब

सबसे बढ़िया उत्तर

जैसा कि कहा गया है, कि आप सामान्य मामले में एक सरणी शाब्दिक कैसे बनाते हैं।

आप एक int... array वेरिएग पैरामीटर के साथ सरणी को बदल सकते हैं, लेकिन फिर आपको इसे अंतिम पैरामीटर बनाने की आवश्यकता होगी।

Dummy(int someNumber, String message, int... someArray) {}
new Dummy(1, "Hello", 1, 2, 5);
1
Kayaman 29 नवम्बर 2015, 11:07

new Dummy(1, {1, 2, 5}, "Hello");, आप केवल सरणी आरंभीकरण के लिए {} सिंटैक्स का उपयोग कर सकते हैं। new Dummy(1,new int[] {1, 2, 5}, "Hello"); का उपयोग करें

0
Ramanlfc 29 नवम्बर 2015, 11:07