GWT教程说
As of GWT 1.5, it must have a default (zero argument) constructor (with any access modifier) or no constructor at all.
因此,当默认构造函数仅由序列化机制使用时,使其成为private
是否有用?这样,类的客户端不会意外调用默认构造函数,可见界面变小。
或者它以某种方式以某种方式影响序列化机制?
答案 0 :(得分:6)
GWT教程声明似乎适用于GWT本身的特定要求,否则它重申了一个常见的误解。 Java 要求是最近的非可序列化基类具有可访问的默认构造函数。不是可序列化的类本身。
答案 1 :(得分:0)
序列化的完整过程还涉及反序列化,其中将重构java对象。
因此,将一个私有构造函数添加到可序列化的类将不会在返回的路上工作(反序列化),因为您不能同时拥有具有相同参数的私有和公共构造函数(在GWT情况下,默认情况下为no args - one)坚持使用公共修饰语。
喝彩!
答案 2 :(得分:-2)
**警告此答案不是关于GWT编译器如何处理其所需的默认非ARG构造器**
如果您将其设为私有,则序列化将无效。
来自Javadoc: “只有当它扩展的类具有可访问的no-arg构造函数来初始化类的状态时,子类才可以承担此责任。如果不是,则声明类Serializable是错误的case。将在运行时检测到错误。“
是的,它会影响序列化过程。
您可以弃用或注释此构造函数,指示它仅用于序列化目的。
有关序列化的详细信息,请参阅here。