java.io.NotSerializableException: java.util.ArrayList$SubList

  今天和同事联调一个接口,抛未序列化异常。异常直接指向List类,我的第一反应是List的泛型类没有实现Serializable。

Caused by: java.io.NotSerializableException: java.util.ArrayList$SubList
  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
  at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
  at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
  at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
  at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
  at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
  at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
  at com.taobao.hsf.remoting.serialize.JavaEncoder.encode(JavaEncoder.java:17)
  at com.taobao.hsf.remoting.util.RemotingUtil.convert2RpcRequest(RemotingUtil.java:192)
  at com.taobao.hsf.remoting.EnumRemotingType$1.convertRequest(EnumRemotingType.java:24)
  at com.taobao.hsf.remoting.client.AbstractClient.futureInvoke(AbstractClient.java:58)
  at com.taobao.hsf.remoting.invoke.component.SyncInvokeComponent.invoke(SyncInvokeComponent.java:53)

  检查RPC接口的返回的类和它的字段,都是实现了序列化接口的。查看SubList的继承关系图。原来是SubList没有实现序列化接口。
这里写图片描述

  写段代码测试一下:

    @Test
    public void test() {
        ArrayList list = new ArrayList();
        list.add(1);
        list.add(1);
        list.add(1);
        List subList = list.subList(0, 1);
        if(subList instanceof java.io.Serializable) {
            System.out.println(subList.getClass().getName() + " implement serializable");
        } else  {
            System.out.println(subList.getClass().getName() + " does not implement serializable");
        }
    }

输出

java.util.ArrayList$SubList does not implement serializable

  并不是所有的未序列化异常都是自己写的类没实现 serializable接口导致的,也有可能是自己天天用的jdk。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值