2017-01-20 5 views
1

Beanアノテーションを使用して、クラスの変数にセッターとゲッターを取得します。 しかし、Javaのようなgetterとsetterを使うためのスケーラプログラミングの良い習慣はありますか?現実世界の多くのプログラマーがScalaのBeanアノテーションを使用しているかどうかを知ろうとしています。ゲッターとセッター用のスカラーのBeanプロパティ

+1

Functional Programming(FP)は状態を維持するデータ構造を失望させます。そのため、Scalaスタイルは可能な限りsetterを回避しようとします。 – jwvh

+0

ありがとうございました。 – jason

+0

これらは不要です。valまたはvarを使用してください。ゲッターとセッターは自動的に作成され、シームレスに使用されます。 Javaにはこれがありませんので、手動で作成する必要があります。 – puhlen

答えて

0

Scalaは既にフィールド用のゲッターとセッターを自動的に作成します。フィールドは決して公開されていないからです。代わりに、すべてのフィールドはプライベートであり、ゲッターdef <fieldname>: <fieldtype>が作成されます。フィールドがvarの場合は、セッターdef <fieldname>_=(new: <fieldtype>): Unitが作成されます。 getterメソッドにはパラメータリストがないため、その使用法はJavaフィールドへのアクセス(obj.field)のように見えますが、そうではありません。 Scalaは_=で終わるメソッドのために砂糖を紹介し、x.y = zという表記法で呼び出すことができます。これはx.y_=(z)と同じです。このようなメソッドを手動で作成して、同じ動作を確認することができます。 (警告:手動で定義されたメソッドx_=意志ゲッターxも存在しない限りない砂糖。)

BooleanBeanPropertyの機能は、単に標準のJavaビーンの方法で指定されたこれらのメソッドにエイリアスを追加することです(getX/isXおよびsetX)。したがって、純粋なScalaでは不要ですが、何らかの理由でJava標準に準拠する必要がある場合に便利です。例えば。 Beanのプロパティに反射的にアクセスするライブラリを使用します。

関連する問題