java - Gwt 序列化

标签 java gwt jdbc

我有课Data它实现了 Serializable界面。这个类有这样的字段

    private boolean q = false;
    private String a = "";
    private List<Someclass> m = Collections.emptyList();
    private List<Object[]> d = Collections.emptyList();

分配给这些成员的值为默认值。类 Someclass还实现 Serializable它有这样的列

   private Types sqlType;
    private int columnWidth;
    private String columnName;

Types是一个也实现了可序列化的枚举。

Data我有课List<Object[]> d其中我将通过 jdbc 保存从数据库获取的数据(迭代 ResultSet 时我使用 getObject() 方法)。我使用这样的构造,因为它可以运行任何查询(查询的结构未知)。在 List<Someclass> m我保存查询的元数据。因此,当我尝试使用简单查询获取行时,我得到

com.google.gwt.user.client.rpc.SerializationException: Type '[Ljava.lang.Object;' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = [Ljava.lang.Object;@127053a9

为什么会出现这种情况?我所有的传输对象都是可序列化的。

编辑 好的,Object不可序列化,因此无法将其传递到服务器并从服务器返回。但在这种情况下我应该使用什么。泛型对我没有帮助,因为我不知道编译时的类型

最佳答案

为了使类可序列化,基本上您可以从它获取的所有内容也必须可序列化。在这种情况下,Object 不可序列化,这使得 Object[] 不可序列化,这使得 List 不可序列化,这使得 Data 不可序列化。

这样想:如果您无法序列化 Object[] 中的给定对象,那么您将如何序列化 Object[]?如果你不能序列化它,你将如何序列化它的列表?如果您无法序列化该列表,那么您将如何序列化包含该列表的内容?

现在,Object[] 中的所有内容最终都可能是可序列化的——但根据您键入的方式,编译器无法保证这一点。

编辑:关于您应该使用什么,我将创建某种包装类来保存 SQL 查询的结果,并使该结果可序列化。

关于java - Gwt 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434262/

相关文章:

java - 添加到 ArrayList 时出现 NullPointerException [长文]

java - 无法通过延迟绑定(bind)创建...的实例

java - Google 自定义搜索 API : how to get search result contents description (e. g 片段)用于 URL

java - 在 Java 中规范化字符串时编码人工制品

hibernate - NoClassDefFound错误: org/hibernate/cfg/Configuration

java - GWT- CellTable--设置行突出显示的问题

database - 从 Groovy 中的文件运行 ddl 脚本

java - 使用 JTextFields 中的字符串填充 JTable

java - Eclipse 市场没有安装按钮

java - 当GWT无法找到类路径时,我应该在哪里添加(Intellij)