【发布时间】:2011-04-04 12:39:42
【问题描述】:
我在 GWT 中定义了一个简单的“键值存储”服务;我将编写服务器,但让其他人编写客户端,所以它应该尽可能简单。我希望客户端能够使用字符串键,但任何可序列化类型的值。于是我定义了接口:
public void put(String key, java.io.Serializable value);
public java.io.Serializable get(String key);
这很好用,但是有一个问题:Eclipse 对这两种方法都给出了以下警告:
检查所有符合序列化条件的 Object 子类型
谷歌搜索该警告,似乎 GWT 将为程序中的每种类型生成一段代码。因此,这可能非常昂贵。我很困惑,因为我认为 Serializable 接口中的所有类型都已经有序列化代码,它可以调用它(但也许只有在这种情况下才会生成序列化代码)。
所以我有几个问题:
- 这会使客户端代码 a) 更大和/或 b) 更慢吗?这个问题有多严重?
- 我看到 GWT 提供了一个单独的接口
IsSerializable。我可以用那个代替吗?我试过了,但我注意到像 String 和 Integer 这样的基本类没有实现这个接口。 - 如果我让 RPC 层改用
byte[],但为我的客户提供一个包装方法来将java.io.Serializable序列化为byte[],这会解决问题,还是会以相同的结果结束我开始遇到的代码膨胀问题? - 是否有更好的方法来实现键值存储,它允许任意类型的值而不需要代表客户端进行太多工作?
- 如果我坚持使用 Serializable,有没有办法抑制该警告?
【问题讨论】:
-
注意:至于抑制该警告,目前似乎没有办法做到这一点。上面有个问题,Issue 3501。
标签: gwt serialization gwt-rpc