【问题标题】:GWT-RPC and immutable transfer objectsGWT-RPC 和不可变传输对象
【发布时间】:2011-05-27 01:20:15
【问题描述】:

GWT-RPC 要求将传输对象序列化must have a default (zero-argument) constructor。同样,final 字段也不会被序列化(参见 issue 1054)。

另一方面,我知道我应该“最小化可变性”。我的倾向是希望我的 TO 是不可变的,具有最终字段、没有默认构造函数和修改器。

如何在尽可能尊重不可变范式的同时使用 GWT-RPC。我是否必须转换为可变对象才能编组,然后再转换回不可变对象?这还值得吗?

【问题讨论】:

    标签: gwt serialization marshalling immutability gwt-rpc


    【解决方案1】:

    Effective Java 中的第 13 项(第二版中的第 15 项)提供了有关如何最小化可变性或支持不变性的策略。

    假设我们删除了 mutators 但保留了非最终字段和默认构造函数。效果将是一个理论上可变的对象,但实际上是一个不可变的对象。是的,我们可以通过反射来改变对象,但需要付出一些努力,但是通过简单地关闭暴露的方法,我们至少可以阻止在这种情况下改变它,因为使对象真正不可变是不切实际的。

    【讨论】:

    • 您可以使用反射更改最终字段,因此真正的损失在于代码的自我文档......
    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2011-03-18
    • 2017-10-31
    相关资源
    最近更新 更多