मैं तालिका पंक्ति से सभी रिकॉर्ड पुनर्प्राप्त करने के लिए एक ईमेल मानदंड वाली तालिका पर पुनरावृति करने का प्रयास कर रहा हूं। मुझे यह त्रुटि संकेत मिल रहा है

Type mismatch: cannot convert from element type User to Object[]

यह मेरा प्रयास है:

List<User> adminList = _adminDao.getSingleUser(searchName);

    for (Object[] row: adminList) {
        System.out.println(" ------------------- ");
        System.out.println("first row: " + row[0]);
        System.out.println("second row: " + row[1]);
    }

कृपया मैं उपरोक्त को सरणी तत्वों के रूप में कैसे प्राप्त करूं

0
Francis 28 सितंबर 2016, 12:11

5 जवाब

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

आपको एक List<User> मिलता है, इसलिए आपको अपने लूप में उपयोगकर्ता ऑब्जेक्ट के साथ काम करना होगा:

List<User> adminList = _adminDao.getSingleUser(searchName);

for (User row: adminList) {
 //Do anything with the user
}

BTW: _adminDao.getSingleUser को उपयोगकर्ताओं की सूची नहीं लौटानी चाहिए।

2
Jens 28 सितंबर 2016, 12:20

संदेश आपको वह सब बताता है जो आपको जानना चाहिए:

यह कोड:

for(Object[] row : adminList)

कहता है: "मैं उम्मीद करता हूं कि उस सूची का प्रत्येक सदस्य 'ऑब्जेक्ट की सरणी' प्रकार का होना चाहिए"।

जो सुनने में काफी गलत लगता है। तो, आपको पीछे हटना होगा और पुनर्विचार करना होगा कि आपने उस कोड को पहले स्थान पर क्यों रखा है!

सूची में पहले से ही उपयोगकर्ता वर्ग की वस्तुओं को शामिल करने की घोषणा की गई है, इसलिए इसका उपयोग करने का सीधा तरीका होगा।

for (User user : adminList)

अगर वह नहीं है जो आपको चाहिए; तो ठीक है, आपने adminList को List<User> प्रकार का घोषित क्यों किया?

और सिर्फ रिकॉर्ड के लिए: यह वास्तव में एक बहुत बुनियादी जावा समस्या है। यदि आप अभी तक ऐसी बुनियादी बातें नहीं समझते हैं, तो आपको पहले कुछ गंभीर समय सीखने java पर लगाना चाहिए। यदि आप नहीं समझते हैं कि ClassCastException का क्या अर्थ है और इससे कैसे निपटें।

दूसरे शब्दों में: दौड़ने की कोशिश करने से पहले क्रॉल करना सीखें!

3
GhostCat 28 सितंबर 2016, 12:28

ऐसा लगता है कि आप उपयोगकर्ता ऑब्जेक्ट में सभी सदस्य चर मुद्रित करने का प्रयास कर रहे हैं। इसलिए:

for (User row: adminList) {
        System.out.println(" ------------------- ");
        System.out.println("first row: " + row.getFirstVariable());
        System.out.println("second row: " + row.getSecondVariable());
}
1
Cong Wang 28 सितंबर 2016, 12:19

सबसे पहले आप एक सूची को पुनरावृत्त कर रहे हैं, ऑब्जेक्ट सरणी नहीं। के लिए सही सूची संदर्भ की आवश्यकता है:

for (User row: adminList)

इससे adminList में एक उपयोगकर्ता को पंक्ति (प्रत्येक पुनरावृत्ति) कहा जा सकता है जो उपयोगकर्ता ऑब्जेक्ट का एक संग्रह है।

दूसरा, यदि आप अनुक्रमणिका प्राप्त करना चाहते हैं, तो के लिए सामान्य का उपयोग करें। (या जबकि, करते समय)

for (int i=0; i< adminList.size(); i++) {
  System.out.println(" ------------------- ");
        System.out.println("row: " + adminList.get(i));
}

या foreach के साथ:

for (User row: adminList) {
 System.out.println("row: " + row);
}

और यदि आप कुछ पूर्वनिर्धारित अनुक्रमणिका मुद्रित करना चाहते हैं, तो आपको लूप करने की भी आवश्यकता नहीं है!

System.out.println(" ------------------- ");
System.out.println("first row: " +  adminList.get(0));
System.out.println("second row: " + adminList.get(1));
1
Yuri Blanc 28 सितंबर 2016, 12:23

आपका लूप पसंद करना चाहिए:

List<User> adminList = _adminDao.getSingleUser(searchName);

    int i = 0;
    for (User row: adminList) {
        System.out.println(" ------------------- ");
        System.out.println(i" row: " + row);
        i++;
    }

यहां यह adminList में प्रत्येक तत्व के लिए लूप के अंदर कोड निष्पादित करेगा।

0
Riddhi Gohil 28 सितंबर 2016, 12:17