GWT-RPC要求将传输对象序列化为must have a default (zero-argument) constructor。类似地,最终字段不会被序列化(参见问题1054)。
另一方面,我知道我应该“最大限度地减少可变性”。我倾向于希望我的TOs是不可变的,有final字段,没有默认的构造函数,也没有赋值函数。
如何在尽可能尊重不可变范式的同时使用GWT-RPC。我必须转换成一个可变的对象,然后再转换回一个不可变的对象吗?这样做值得吗?
发布于 2011-05-27 09:43:18
Effective Java中的第13项(第二版中的第15项)给出了如何最小化可变性或支持不变性的策略。
假设我们删除了修饰符,但保留了非final字段和一个默认构造函数。其效果将是一个理论上可变的对象,但实际上是一个不可变的对象。是的,我们可以通过反射来改变对象,但是通过简单地关闭暴露的方法,我们至少可以阻止在这样的情况下改变它,因为在这种情况下,使对象真正不可变是不切实际的。
https://stackoverflow.com/questions/6146855
复制相似问题