因为当你用Externalizable实现serialization时同用Serializable实现是不一样的,简单的说前者发生了构造,也就时说要调用构造函数,但看看你的构造函数能用否?

解决方案 »

  1.   

    Blip1 和 Blip2 都是实现的Externalizable, 为和b1能读出来,而b2不能读出来呢? 我只是想了解异常出现的原因!
      

  2.   

    怎么点你不开窍呢?因为b1所属类的构造函数是public的,而b2所属的不是!!
      

  3.   

    bdsc 兄所言即是! 
     若如此的话,Blip2 b2 = new Blip2();如何编译通过的!在C++里会出错吧!
     再请教这里public的用法,本人初学java,不好意思!
         
     
      

  4.   

    没有什么好奇怪的,是ObjectInputStream类的readObject()方法要public的构造函数,不是你写的东西。