-1

我有一个 TicketBooking 类型的列表,我将其设置为 responseObject。当我尝试获取列表并转换回 TicketBooking 类型时,它正在抛出ClassCastException。这是我的代码

 List<TicketBooking> bookingDetailList = new ArrayList<TicketBooking>();
    bookingDetailList.add(booking);
    if(Utils.isNotNull(oldBooking)) 
        bookingDetailList.add(oldBooking);
    respObj.setObject(bookingDetailList);

从这个方法我返回respObj。

在调用方法中

    List bookingList = new ArrayList();
    bookingList.add(Arrays.asList(respObj.getObject()));
    booking = (TicketBooking) bookingList.get(0);

投掷ClassCastException

请帮忙。

4

4 回答 4

0
Arrays.asList(respObj.getObject())

这个表达式是返回一个List对象,当然会抛出ClassCasException

你应该

List list =  Arrays.asList(respObj.getObject());
for(Object obj in list){
      bookingList.add(obj);
}
于 2012-06-25T10:34:58.713 回答
0

替换add()addAll()

List bookingList = new ArrayList();
bookingList.addAll(Arrays.asList(respObj.getObject()));

如果您使用 add 它会将其视为实例(属于 type List),因此第一个元素将属于List 您然后尝试转换为的类型TicketBooking

于 2012-06-25T10:35:06.227 回答
0
List bookingList = new ArrayList();
bookingList.add(Arrays.asList(respObj.getObject()));//error is here
booking = (TicketBooking) bookingList.get(0);

我认为在 bookingList 你添加了一个完整的 List 而不是一个 TicketBooking 对象。你期待一个 TicketBooking 对象。

您应该按如下方式修改您的代码。

ArrayList<TicketBooking> bookingList= new ArrayList<TicketBooking>();
bookingList.addAll((ArrayList<TicketBooking>)respObj.getObject()); //Add all to add whole list
booking =  bookingList.get(0);
于 2012-06-25T10:35:08.223 回答
0

您需要在调用方法时创建一个 TicketBooking 列表。

你的代码

 List bookingList = new ArrayList();
 bookingList.add(Arrays.asList(respObj.getObject()));
 booking = (TicketBooking) bookingList.get(0);

应该替换为

 List<TicketBooking> bookingList= new ArrayList<TicketBooking>();
 List list =  Arrays.asList(respObj.getObject());
 for(Object obj in list ){
    bookingList.add(obj);
    booking = bookingList.get(0);
 }

或以下将做同样的事情

   List bookingList = new ArrayList();
bookingList.addAll(Arrays.asList(respObj.getObject()));
booking = (TicketBooking) bookingList.get(0);
于 2012-06-25T10:30:27.460 回答