-1

私は responseObject に設定しているタイプ TicketBooking のリストを持っています。リストを取得して 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を使用する場合、それはインスタンス(タイプ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で、単一の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 に答える