java为什么要实现序列化接口