2017-02-19 4 views
0

Ich habe ein Problem versucht, den Inhalt in meiner peakperiod Liste zu lesen. Der Fehler, den ich erhalten habe, ist java.lang.object kann nicht in java.lang.String umgewandelt werden.
Gibt es eine mögliche Problemumgehung für dieses Problem, da ich Java 1.6 verwende?java 1.6 Arraylist-Objekt kann nicht in String umgewandelt werden

Delegate.java

List peakPeriod = new ArrayList(); 
try{ 
    peakPeriod = Dao.retrievePeakPeriod("2017"); 
for (Iterator i=peakPeriod.iterator(); i.hasNext(); { 
    System.out.println("Peak Periods:"+(String)i.next()); 
} 
catch(Exception e){ System.out.println("Error:"+e);} 

Dao.java

public List retrievePeakPeriod(String year) throws DataAccessException; 

DaoImpl.java

public List retrievePeakPeriod(String year) throws DataAccessException { 
    List list = getHibernateTemplate().find("select cal.startdate,cal.enddate from Calendar cal " + 
      "where to_char(cal.startdate,'yyyy') = ?", 
      new Object[] { year }, 
      new Type[] { Hibernate.STRING }); 

    return list; 
} 
+1

Verwenden Sie keine Rohtypen. http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it. Ihre Abfrage gibt eine Liste zurück. Es ist also ziemlich zu erwarten, dass das Umsetzen des Elements auf String fehlschlagen würde. –

+0

Danke und verstanden. Allerdings konnte ich <> für Java 1.6 nicht verwenden, musste aber Arraylist verwenden, um die Ergebnisse abzurufen. –

+0

Generics wurden in Java 5 eingeführt, im Jahr 2004, also vor 13 Jahren. 2 Jahre bevor die erste Version von Java 6 herauskam. Also ja, Sie können definitiv Generika in Java 6 verwenden. –

Antwort

1
System.out.println("Peak Periods:"+ i.next()); 

Sie müssen in einen String nicht werfen es - Java automatisch die toString() -Methode aufrufen wird, so dass die oben entspricht:

System.out.println("Peak Periods:"+ i.next().toString()); 

Wenn Ihre Liste nulls haben, können Sie etwas tun können sicherer wie:

System.out.println("Peak Periods:"+ String.valueOf(i.next())); 

Edit: Dies setzt voraus, dass das zurückgegebene Objekt eine nützliche toString Darstellung hat und es ist das, was Sie wollen. Andernfalls müssten Sie den Typ (die Klasse) des (zurückgegebenen) Objekts herausfinden und damit machen, was Sie wollen.

+0

Danke für die schnelle Antwort. Ich habe die 3 obige Lösung versucht, aber das Ergebnis ist ähnlich. Peak-Perioden: [Ljava.lang.Object; @ 40dc76dd Hauptperioden: [Ljava.lang.Object; @ 49ffc86f Hauptperioden: [Ljava.lang.Object; @ 37c0155d Hauptperioden: [Ljava.lang.Object; @ 23baa943 Spitzenzeiten: [Ljava.lang.Object; @ 33be8008 –

+0

@JanosFang Was zeigt, was ich Ihnen in meinem Kommentar erzähle: Ihre Abfrage gibt eine Liste zurück, keine Liste . Wie könnten zwei Felder (cal.startdate und cal.enddate) in einem einzigen String gespeichert werden? –

+0

@JBNizet Dank JBNize für die Identifizierung der Ursache. Es war mein Fehler, der die Parameter nicht berücksichtigte. –

Verwandte Themen