有没有办法在接口上声明计算属性?

Is there a way to declare computed properties on Interface?

在我的模型中,我声明了一个接口:

Interface('IMovement') {
    date_time 'etd'
    date_time 'rtd'
}

我有很多扩展这个接口的实体:

Entity('Entity1', extend:'IMovement') {
...
}

我想通过添加计算日期之间的差异的计算 属性 来增强界面:rtd-etd.

我在界面上添加了计算 属性 并生成了扩展。

public class IMovementExtension extends AbstractComponentExtension<IMovement> {

    public IMovementExtension(IMovement component) {
        super(component);

        //registerNotificationForwarding(component, IMovement.FIELD, IMovement.COMPUTED_FIELD);
    } ...

但是 Eclipse 引发了以下错误:

Bound mismatch: The type IMovement is not a valid substitute for the bounded parameter of the type AbstractComponentExtension

有没有办法在接口上声明计算属性?

您绝对可以在 Jspresso 接口上使用计算属性,但您必须告诉框架您的接口实现(扩展)IComponent 以便您可以使用扩展机制。

这可以通过使用服务条目轻松实现,如下所示:

Interface('IMovement',
  extension:'IMovementExtension',
  services:['org.jspresso.framework.model.component.IComponent':null]) {
    ...
}