java 1.6 arraylist对象无法强制转换为字符串

时间:2017-02-19 09:03:53

标签: java string arraylist

我在尝试读取peakperiod列表中的内容时遇到问题。我收到的错误是java.lang.object无法强制转换为java.lang.String 有没有可能解决这个问题的方法,因为我使用的是java 1.6?

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 个答案:

答案 0 :(得分:1)

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

您不必将其强制转换为String - java会自动调用toString()方法,因此上述内容相当于:

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

如果您的列表可以包含空值,则可以执行更安全的操作,例如:

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

编辑:这假设返回的对象有一个有用的toString表示,它就是你想要的。否则,您需要弄清楚返回的对象的类型(类),并根据需要对其进行处理。