java 1.6 arraylist对象无法转换为字符串
我在阅读高峰期列表中的内容时遇到问题。我收到的错误是java.lang.object无法转换为java.lang.String。java 1.6 arraylist对象无法转换为字符串,java,string,arraylist,Java,String,Arraylist,我在阅读高峰期列表中的内容时遇到问题。我收到的错误是java.lang.object无法转换为java.lang.String。 在我使用Java1.6时,有没有解决这个问题的方法 Delegate.java List peakPeriod = new ArrayList(); try{ peakPeriod = Dao.retrievePeakPeriod("2017"); for (Iterator i=peakPeriod.iterator(); i.hasNext()
在我使用Java1.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;
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;
}
DaoImpl.java
public List retrievePeakPeriod(String year) throws DataAccessException;
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;
}
您不必将其强制转换为字符串-java将自动调用toString()方法,因此上述方法相当于:
System.out.println("Peak Periods:"+ i.next().toString());
如果列表可以为空,则可以执行更安全的操作,例如:
System.out.println("Peak Periods:"+ String.valueOf(i.next()));
编辑:这假设返回的对象有一个有用的toString表示,并且它是您想要的。否则,您需要找出返回的对象的类型(类),并根据需要对其进行处理。不要使用原始类型。您的查询返回一个列表。所以很有可能将其元素转换为字符串会失败。谢谢并理解。然而,我不能使用Java1.6,但必须使用arraylist来检索结果。在Java6的第一个版本问世前2年。所以,是的,您肯定可以在Java6中使用泛型。感谢您的快速回复。我尝试了上述3种解决方案,但结果相似。峰值时段:[Ljava.lang.Object;@40dc76dd峰值时段:[Ljava.lang.Object;@49ffc86f峰值时段:[Ljava.lang.Object;@37c0155d峰值时段:[Ljava.lang.Object;@23baa943峰值时段:[Ljava.lang.Object@33be8008@JanosFang这显示了我在评论中告诉你的:你的查询返回的是一个列表,而不是一个列表。两个字段怎么可能(cal.startdate和cal.enddate)是否存储在单个字符串中?@JBNizet感谢JBNizet确定原因。是我的错误没有考虑参数。