实现Serializable的类使用非序列化对象作为方法参数是否可正常序列化?
问题解答
完全可以写成接收Player参数的addPlayer方法,不会因为Player不可序列化而有问题,原因如下:
Serializable接口的约束只针对类的成员变量,方法本身以及方法调用时的临时参数、局部变量,都不会参与对象的序列化过程。- 你的代码里只是用
Player对象临时获取UUID,最终存入citizens列表的是可序列化的UUID对象,Player参数在方法执行完就会被回收,不会成为Town对象的一部分,自然不会影响Town的序列化。
只有当你把Player对象声明为Town类的成员变量(比如public Player currentMayor;)时,才会因为Player不可序列化导致Town对象无法正常序列化——因为此时序列化Town会尝试序列化它的所有成员变量。
内容的提问来源于stack exchange,提问作者Bionicle Kolacz
相关产品推荐
相关产品推荐

