Java 如何使RPC的列表可序列化?
我有一个Java 如何使RPC的列表可序列化?,java,gwt,serialization,Java,Gwt,Serialization,我有一个列表foos,可以毫无问题地发送到GWT-RPC服务。 但如果我将该列表包装到一个新对象中,启动时会出现异常 subtype MyDTO is not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' or 'java.io.Serializable' nor does it have a custom field serializer (reached via MyDTO) 为什么我可以发送列表本身,但不能发送
列表foos
,可以毫无问题地发送到GWT-RPC服务。
但如果我将该列表包装到一个新对象中,启动时会出现异常
subtype MyDTO is not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' or 'java.io.Serializable' nor does it have a custom field serializer (reached via MyDTO)
为什么我可以发送列表本身,但不能发送包装器对象
与:
当然,这种结构没有多大意义,但它描述了我的问题。
如果我只是通过RPC发送列表foos,一切都正常
如果我将MyDTO包装发送到包含foo列表的包装中,则会抛出所提到的异常。
这里出了什么问题?使MyDTO实现可序列化的
<代码>列表默认情况下可序列化。使MyDTO实现可序列化
<代码>列表默认情况下可序列化。您的myDTO类扩展可序列化吗?您的myDTO类扩展可序列化吗?不可序列化。它的标准实现(例如,ArrayList
)是可序列化的。当然,列表不能实现可序列化。这是一个界面。很好,这是一个快速修复。实现可序列化让应用程序编译。当然List
可以Serializable
。这叫做接口继承。因此,所有实现类也必须是可序列化的。它的标准实现(例如,ArrayList
)是可序列化的。当然,列表不能实现可序列化。这是一个界面。很好,这是一个快速修复。实现可序列化让应用程序编译。当然List
可以Serializable
。这叫做接口继承。因此,所有实现类也必须是可序列化的。
class MyDTO {
List<Foo> foos; //containing Rectanlges (see below)
public MyDTO() {}
List<Foo> getFoos() { return foos; }
void setFoos(List<Foo> foots) { this.foos = foos; }
}
interface Foo {
abstract int getX();
abstract void setX(int x);
}
class Rectangle implements Foo {
private int x;
public Rectangle() {};
//impl of foo methods
}