2016-09-28 2 views
0

Ich versuche, eine Tabelle mit E-Mail-Kriterien zu durchlaufen, um alle Datensätze aus der Tabellenzeile abzurufen. Ich erhalte diesen Fehler HinweisTypenkonflikt: Konvertierung von Elementtyp Benutzer in Objekt [] nicht möglich

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

Dies ist mein Versuch:

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]); 
    } 

Bitte, wie rufe ich die oben als Array-Elemente

+0

dies versuchen: für (User Reihe: Adminlist) – Elgayed

Antwort

2

Sie erhalten eine List<User>, so dass Sie mit dem Benutzerobjekt in der Schleife arbeiten:

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

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

BTW: _adminDao.getSingleUser sollte keine Liste der Benutzer zurück.

+0

So kann ich die einzelnen Elemente der Zeile abrufen – Francis

+0

@Francis ein Benutzer eine Zeile ist – Jens

+0

ich meine die einzelnen Spalten in der Zeile – Francis

3

Die Nachricht sagt Ihnen alles, was Sie wissen müssen:

Dieser Code:

for(Object[] row : adminList) 

sagt: "Ich erwarte, dass jedes Mitglied der Liste vom Typ 'array of Object' sein soll".

Das klingt eher falsch. Also, Sie müssen zurücktreten und überdenken, warum Sie diesen Code in erster Linie ablegen!

Die Liste ist bereits deklariert, um Objekte der Klasse Benutzer zu enthalten, so dass die einfache Art, es zu verwenden wäre.

for (User user : adminList) 

Wenn das nicht, was Sie brauchen; dann, gut, warum hast du adminList zum typ List<User> erklärt?

Und nur für das Protokoll: das ist wirklich ein sehr einfaches Java-Problem. Wenn Sie solche grundlegenden Dinge noch nicht verstehen, sollten Sie einige Zeit auf Java zuerst verbringen. Es gibt absolut keinen Punkt in der Verwendung von Frameworks wie Hibernate (die mit einer riesigen Menge an Komplexität kommen!) Wenn Sie nicht verstehen, was eine ClassCastException bedeutet und wie man damit umgehen.

Mit anderen Worten: Lernen Sie zu crawlen, bevor Sie versuchen zu laufen!

1

Zuerst iterieren Sie eine Liste, nicht ein Objekt-Array. Die für müssen die richtige Liste Referenz:

for (User row: adminList) 

Dies ist wahrscheinlich eine Benutzer namens Zeile (jede Iteration) in der Adminlist erhalten, die eine Sammlung von Benutzerobjekt ist.

Zweitens, wenn Sie Indizes erhalten möchten, verwenden Sie eine normale für.(Oder während tun, während)

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

oder mit foreach:

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

Und wenn Sie einige vordefinierte Indizes ausdrucken möchten, Sie brauchen nicht einmal eine Schleife!

System.out.println(" ------------------- "); 
System.out.println("first row: " + adminList.get(0)); 
System.out.println("second row: " + adminList.get(1)); 
0

sollte Ihre Schleife mag:

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

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

Hier wird es Code in Schleife ausführen für jedes Element in Adminlist.

1

Scheint, dass Sie versuchen, alle Mitgliedsvariablen in einem Benutzerobjekt zu drucken. Also:

for (User row: adminList) { 
     System.out.println(" ------------------- "); 
     System.out.println("first row: " + row.getFirstVariable()); 
     System.out.println("second row: " + row.getSecondVariable()); 
} 
Verwandte Themen