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
}