接口中赋值的语义是什么?



我看到了下面的代码。它是一个接口,其中有一个属性分配。我知道接口只能用来声明方法。这样做的目的是什么?

interface Literals {
    /**
     * The meta object literal for the '{@link bowling.impl.PlayerImpl <em>Player</em>}' class.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @see bowling.impl.PlayerImpl
     * @see bowling.impl.BowlingPackageImpl#getPlayer()
     * @generated
     */
    EClass PLAYER = eINSTANCE.getPlayer();
    /**
     * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    EAttribute PLAYER__NAME = eINSTANCE.getPlayer_Name();
    /**
     * The meta object literal for the '<em><b>Date Of Birth</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    EAttribute PLAYER__DATE_OF_BIRTH = eINSTANCE.getPlayer_DateOfBirth();
}

短答:常量

引用Java语言规范,第9节"接口",第9.3节"字段(常量)声明":

接口体中的每个字段声明都隐式地为public, staticfinal。允许为这些字段冗余地指定任何或所有这些修饰符。

指定隐式修饰符是相同的,但可能需要澄清:

interface Literals {
    public static final EClass PLAYER = eINSTANCE.getPlayer();
    public static final EAttribute PLAYER__NAME = eINSTANCE.getPlayer_Name();
    public static final EAttribute PLAYER__DATE_OF_BIRTH = eINSTANCE.getPlayer_DateOfBirth();
}

我称之为反模式。接口是用来使用方法定义契约的。在提供的接口中,它似乎用于全局变量的目的。

从逻辑上讲,接口具有属性/属性是没有意义的,类应该用于具有属性和操作的实体。这可以使用类和静态导入来实现相同的目的。

相关内容

  • 没有找到相关文章

最新更新