GWT-RPC要求传输对象序列化 must have a default (zero-argument) constructor.同样,最终字段不会被序列化(参见问题 1054). 另一方面,我知道我应该“尽量减少可变性”.我倾向于希望我的TOs是不可变的
另一方面,我知道我应该“尽量减少可变性”.我倾向于希望我的TOs是不可变的,包含final字段,没有默认构造函数,也没有mutator.
如何在尽可能尊重不可变范式的同时使用GWT-RPC.我是否必须转换为可变对象进行编组,然后返回不可变对象?这甚至值得吗?
Effective Java中的第13项(第二版中的第15项)给出了如何最小化可变性或有利于不变性的策略.假设我们删除了mutator但保留了非final字段和默认构造函数.效果将是理论上可变的对象,但实际上是不可变的对象.是的,人们可以通过反思通过一些努力来改变对象,但是通过简单地关闭暴露的方法,我们至少可以阻止在这样的情况下对其进行改变,使得对象真正不可变是不切实际的.