2016-08-12 3 views
1

Ich bin vor ein Problem zur Liste, wenn Liste UmwandlungWie Liste konvertieren <?><className>

List<ContentDes> contentDes_ls = new ArrayList<ContentDes>(); 
     logger.info("in getContentDes "); 

     List<?> ls = ho.getResultListByLimit(sql,limit); 
     contentDes_ls = (List<ContentDes>)ls; 
    logger.info(" size of content "+contentDes_ls.size()); 
    for (ContentDes contentDes : contentDes_ls) { 
     logger.info(contentDes.getPricetag()); 
     logger.info(contentDes.getPrv()); 
    } 

Sein feiner gearbeitet, um Liste, wenn ich die Größe der List<SomeClass> bekommen, aber wenn ich die Getter und Setter von SomeClass ich zugreifen bekam Ausnahme

Ausgang:

size of content 2 

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.SomeClass] 
+1

Generischer Typ kann nicht direkt einen Klassen-Cast ausführen. Sie können die Liste mithilfe von Object iterieren und damit die Klasse anhand von instanceof beurteilen und Class-Cast durchführen. – MageXellos

Antwort

3

Someclass wird nicht erwähnt anywher e in deinem Code, also nehme ich an, du meinst ContentDes.

Es scheint, dass Ihre Liste keine ContentDes-Instanzen enthält. Die Ausnahme gibt an, dass die Elemente anstelle des Typs Object[] sind. Dies führt zu einer ClassCastException, wenn Sie versuchen, die Elemente als ContentDes zu durchlaufen.

+0

@ Marthursson: Sie haben Recht .. Dank für die Hilfe Meine getResultListByLimit (sql, limit) proforms Betrieb: Liste ls_obj = session.createQuery (Abfrage) .setMaxResults (limit) .list(); ist es eine Möglichkeit, warf dieses Ergebnis in der Liste Eine Methode zu lenken, die ich weiß, ist die Liste itrate für jede Schleife Objekt von ContentDes erstellen und anschließend diese Werte unter Verwendung von Set-Methode von ContentDes Klasse gesetzt und dann zu der Liste hinzufügen

+0

Wenn Sie die Liste aus der Liste in die Liste umwandeln, sagen Sie im Grunde den Compiler "Keine Sorge, ich bin sicher, dass die Liste Objekte dieses Typs enthält". Wenn sie nicht von diesem Typ sind, gibt es keine Möglichkeit, das Objekt auf magische Weise zu übersetzen - Sie müssen dafür einen expliziten Code schreiben. Der Grund, warum die Liste keine ContentDes-Instanzen enthält, ist eine andere Frage. Aus Ihrem Kommentar geht hervor, dass es sich um ein Problem im Zusammenhang mit dem Ruhezustand handelt, das für die aktuelle Frage nicht relevant ist. – marthursson

Verwandte Themen