为什么java.util.RandomAccessSubList无法序列化?

Nik*_*lev 5 java serialization

昨天,我有一个奇怪的例外,那就是无法将班级强制转换为自己的课程,这花了我好几个小时才能解决。

简而言之,事实证明原因是我的EJB服务在某些情况下返回了RandomAccessSubList,(在检查了源代码之后)我注意到它不可序列化。

当然,我意识到创造这个的人可能比我聪明得多,但是我不禁认为这不是一个特别好的设计决定。

我知道不是所有的List实现都是可序列化的,但是为什么subList方法不能通过为同时实现Serializable的父类提供实现Serializable的SubList实例来解决这个问题?它确实为RandomAccess接口提供了此功能。

还是为什么不仅仅将RandomAccessSubList标记为Serializable并让原始实现(RandomAccessSubList引用了)担心序列化?