2011-12-19 15 views
56

संभव डुप्लिकेट:
How to return multiple objects from a Java method?एकाधिक मान कैसे वापस करें?

क्या यह संभव है जावा में मुख्य के लिए एक विधि से दो या अधिक मानों वापस जाने के लिए? यदि हां, तो यह कैसे संभव है और यदि नहीं, तो हम कैसे कर सकते हैं?

+2

रिटर्न सरणी, सूची, सेट, मानचित्र या एकाधिक मान वाले आपकी कस्टम ऑब्जेक्ट। मैंने यह वही सवाल कहीं देखा है .... मुझे वह खोजने दो। इस विषय पर कई प्रश्न हैं: http://stackoverflow.com/search?q=return+multiple+values+in+java%3F –

उत्तर

53

आप जावा में कक्षा के किसी ऑब्जेक्ट को वापस कर सकते हैं।

यदि आप संबंधित 1 से अधिक मान लौट रहे हैं, तो उन्हें कक्षा में encapsulate करने के लिए समझ में आता है और फिर उस clas की एक वस्तु वापस।

आप असंबंधित मूल्यों वापस जाने के लिए तो आप मानचित्र, सूची, सेट आदि जैसे जावा के अंतर्निहित कंटेनर क्लासों का उपयोग कर सकते अधिक जानकारी के लिए java.util पैकेज के JavaDoc की जाँच करें चाहते हैं।

+0

मैं इसमें एक और बिंदु जोड़ूंगा - अपनी लौटाई वस्तु को अपरिवर्तनीय रखें (सर्वोत्तम इसे प्रारंभ करें एक कन्स्ट्रक्टर में और अपने फ़ील्ड को अंतिम रखें) – Kris

+1

आप ऑब्जेक्ट वापस कर सकते हैं, लेकिन अगर आपके प्रोग्राम में इतनी सारी रिटर्न ऑब्जेक्ट्स हैं तो यह स्रोत कोड जटिल बनाती है। ऐसी चीजों के लिए जो एक विधि से वापस आते हैं, इसके बाद-यह-प्रोग्राम-टू-टू-टू-टू-टू-टू-टू-टू-टू-टू-प्रोग्राम। सी # की तरह। प्रिय सी # यह एक महान भाषा है – docesam

+1

मुझे लगता है कि जावा में समकक्ष सी # 'आउट' या 'रेफरी पैरामीटर होना चाहिए, अन्यथा मुझे दो चर लौटने के लिए कक्षा बनाने और प्रत्येक फ़ंक्शन को कई मान लौटने के लिए भी कक्षा बनाने की आवश्यकता होगी। यदि हम इसका पालन करते हैं, तो प्रत्येक फ़ंक्शन के लिए कई मान लौटने के लिए एक कक्षा होगी। हालांकि 'मानचित्र' का उपयोग करना अब बेहतर दृष्टिकोण महसूस करता है। – Mahesha999

26

आप केवल एक मान वापस कर सकते हैं, लेकिन यह एक ऐसा ऑब्जेक्ट हो सकता है जिसमें एकाधिक फ़ील्ड हों - यानी "मान ऑब्जेक्ट"। उदाहरण के लिए

public class MyResult { 
    int returnCode; 
    String errorMessage; 
    // etc 
} 

public MyResult someMethod() { 
    // impl here 
} 
26

आप कुछ इस तरह कर सकते हैं:

public class Example 
{ 
    public String name; 
    public String location; 

    public String[] getExample() 
    { 
     String ar[] = new String[2]; 
     ar[0]= name; 
     ar[1] = location; 
     return ar; //returning two values at once 
    } 
} 
-4

हाँ आप एक से अधिक मूल्य प्राप्त कर सकते हैं, लेकिन आप ArrayLists भीतर मूल्य संयोजित करने होंगे। मैं आपको उदाहरण दिखाऊंगा, और कोड पर एक नज़र डालेंगे:

class mahasiswa{ 
    public String nama; 
    public String nrp; 
    public String sks; 
    public String namakul; 

    public mahasiswa(String nm, String ps, String sk, String nmkul){ 
     this.nama = nm; 
     this.nrp =ps; 
     this.sks = sk; 
     this.namakul = nmkul; 
    } 

    public String getsks(){ 
     return sks; 
    } 

    public String getnamakul(){ 
     return namakul; 
    } 

    public String getnama(){ 
     return nama; 
    } 

    public String getnrp(){ 
     return nrp; 
    } 
} 

ArrayList<mahasiswa> myObject; 

public myArray() { 
    initComponents(); 
    myObject = new ArrayList<mahasiswa>(); 

    for(int i =0;i<myObject.size();i++){ 
     jTextArea1.append("Nama" + " = " + myObject.get(i).getnama() + "\n" + "NRP " + " = " + myObject.get(i).getnrp() + "\n" + "Nama Matakuliah = " + myObject.get(i).getnamakul() + "\n" + "SKS = " + myObject.get(i).getsks() + "\n"); 
    }   
} 
+0

अत्यधिक जटिल हैं! –

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