0

Java で不変メンバーを持つクラスがあった場合、次のようにします。

class MyClass {
    private final String name;
    private final int id;
    myClass(String name, int id) {
        this.name = name;
        this.id = id;
    }
    String getName() { return name; }
    int getId() { return id; }
}

Progress-4GL では、通常、次のような内容が表示されます。

CLASS MyClass :

    DEFINE VARIABLE mcName as CHARACTER NO-UNDO.
    DEFINE VARIABLE miId   as INTEGER   NO-UNDO.

    CONSTRUCTOR PUBLIC MyClass(INPUT ipcName AS CHARACTER,
                               INPUT ipiId AS INTEGER):
        ASSIGN mcName = ipcName
               miId   = ipiID.
    END. /* constructor(char,int)*/
END CLASS. /* MyClass */

Progress 10.2B で、定数/最終変数を作成する機能が追加されたとのことでした。ただし、どこにも参照が見つかりません。FINAL私のアーキテクト (バージョン 10.2A) では、それがキーワードと見なされていることがわかります。しかし、その背後にあるドキュメントは、単に私を逃れます.

Progress のドキュメントを検索しようとしたことがあるなら、私のジレンマをご存知でしょう。

Progress 10.2B で不変変数を使用するにはどうすればよいですか? 注意が必要な落とし穴はありますか?

ありがとう!

EDIT 1に関するドキュメントを見つけましたFINAL。クラスとメソッドにのみ適用されるようです。私の現在のアプローチは

CLASS ImmutableString :
    DEFINE PRIVATE VARIABLE mcValue AS CHARACTER NO-UNDO.

    CONSTRUCTOR PUBLIC ImmutableString(INPUT ipcValue AS CHARACTER) :
        ASSIGN mcValue = ipcValue.
    END.

    METHOD PUBLIC CHARACTER getValue() :
        RETURN mcValue. /* Is a defensive copy required? */
    END METHOD.
END CLASS.
4

1 に答える 1

5

パブリックの「GET」とプライベートの「SET」を使用してパブリック プロパティを作成することもできます。

   DEF PUBLIC PROPERTY Value AS CHAR NO-UNDO
      GET.
      PRIVATE SET.

   CONSTRUCTOR PUBLIC ImmutableString(INPUT ipcValue AS CHARACTER) :
       Value = ipcValue.
   END.

これは少し少ないコードで、同じことを行います。

元のポスターの例と一致するようにプロパティ名を変更するために編集されました。

于 2011-03-29T14:30:35.973 に答える