GWT-RPC 错误 - 子类型不可实例化

Posted

技术标签:

【中文标题】GWT-RPC 错误 - 子类型不可实例化【英文标题】:GWT-RPC error - subtype is not instantiable 【发布时间】:2013-03-06 14:17:01 【问题描述】:

有以下类:

@Entity
public class MPolicy extends MAbstractEntity 

    private MPolicyCondition condition;

    private List<MPolicyAction> actions;

    ...



@Entity
public abstract class MPolicyCondition extends MAbstractEntity 



@Entity
public abstract class MPolicyAction extends MAbstractEntity 

    @Column(unique = true)
    protected String name;

    public String getName() 
        return name;
    
    public void setName(final String name) 
        this.name = name;
    

为什么会出错:

com.*.MPolicyCondition 子类型不可实例化

出现了吗?

如果我从 MPolicyCondition 中删除抽象关键字,一切正常!但是 MPolicyAction 类也是抽象的。为什么 MPolicyCondition 对 bug 有影响,而 MPolicyAction 没有?

【问题讨论】:

【参考方案1】:

我发现 MPolicyCondition 的子类没有可序列化的成员。 所以问题就解决了。但是编译器对错误解释会更友好!

【讨论】:

【参考方案2】:

因为你有一个 MPolicyAction 列表。

您的 List 实现(可能是 ArrayList)是可实例化的。

【讨论】:

以上是关于GWT-RPC 错误 - 子类型不可实例化的主要内容,如果未能解决你的问题,请参考以下文章

第4条:通过私有构造器强化不可实例化的能力

类型“XX”不可分配给类型“YY”。 'XX' 可分配给'YY' 类型的约束,但'YY' 可以被实例化

可以使用不同的约束子类型来实例化函数

不可实例化的超类

Laravel 4 目标接口不可实例化

第4条:通过私有构造器强化不可实例化的能力