GWT-RPC 和不可变传输对象

标签 gwt serialization marshalling immutability gwt-rpc

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

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

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

最佳答案

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

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

关于GWT-RPC 和不可变传输对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6146855/

相关文章:

gwt - 将不同 GWT 事件所需的状态放在哪里?

java - 考虑 GWT 中的本地化,将字符串格式化为日期

c++ - 使用 C++ 序列化对象的首选方法

C# 编码非托管指针返回类型

xml - Golang xml marshal 追加更深的项目?

c# - 将 C# 引用传递给 C++ 指针并返回

gwt - 如何在不同的项目中将 JPA 对象与 GWT 一起使用?

maven - 如何在 Tomcat 上运行时调试 GWT 应用程序

kotlin - 如何使用 kotlinx 序列化使用 open val 序列化 kotlin 密封类

javascript序列化对象同时保留继承