18

始める前に、私が実際にこれをグーグルで検索し、多くの説明と定義を見つけたことを皆さんに知ってもらいたいと思います. しかし、それでも、何時間もかけてこの主題を読んだ後では、まだ漠然としたものに思えます。コミュニティをより良くするための質問をしなければならないことはわかっていますが、これは私が JavaBeans を明確に理解しているかどうかを確認するためのものです。

私が理解できることから、JavaBean は基本的に他の Java クラスと同じクラスですが、特定の規則に準拠している点が異なります。

  • クラスは Serializeable を実装する必要があります
  • クラス プロパティはプライベートであると見なされ、その名前は小文字で始まります
  • 各プロパティには、それぞれのゲッター メソッドとセッター メソッドが必要です。
  • 各セッター メソッドは、接頭辞「get」で始まり、その後にプロパティ名が続きます。例: setName()
  • setter メソッドは public および void です
  • getter メソッドにも同じことが当てはまります (接頭辞「get」、パブリック、戻り値の型、それぞれのプロパティ クラスの型など)。
  • 「get」の代わりにブール値のプロパティの場合、接頭辞「is」を使用します
  • 厳密に言えば、「Bean」と見なされるのはクラス自体ではなく、クラスのインスタンスです。

そして、あなたはそれを持っています、非常に長い間読んだ後、それが私が理解できるものです...それですか?私は近いですか?これは完全に間違っていますか?

...この箇条書きリストを更新できるように、皆さんの回答に感謝します:-)

4

4 に答える 4

10

Javabean は標準です。すべての Javabean には、次の 3 つの性質があります。

1) クラスが実装するSerializable
2) すべてのフィールドには、アクセスを制御するパブリック セッターとゲッターがあります。
3) public 引数なしコンストラクタ。

于 2012-08-06T13:45:27.750 に答える
3

うん、それはほとんどそれです。

ほんの数ビット余分に:

  • ゲッターはパラメーターを取りません、そしてセッターはプロパティと同じタイプの単一のパラメーターを取ります
  • セッターまたはゲッターをそれぞれ省略することにより、プロパティを読み取り専用または書き込み専用にすることができます
  • booleanゲッターはプレフィックス「is」を使用します

そして厳密には、クラスではなく「beans」であるインスタンスだと思います。

于 2012-08-06T13:46:53.303 に答える
2

あれですか?私は近いですか?

はい、あなたは比較的正しいです。ほとんどの Bean は、このような基本的な定義規則に従っています。ただし、さらにいくつか追加する必要があります。Bean を POJO (Plain Old Java Object) と区別するために、Bean にはデフォルトのコンストラクターがあり、通常はシリアライズ可能なインターフェースを実装します。

これにより、多くのフレームワークで基本モデルを操作できます。Bean は主に、単純なレイアウト構造でデータを格納および取得するために使用されるため、特定のアーキテクチャ全体でデータ モデルを共有できます。例としては、異なるダイアログを操作するために同じデータを使用して UI でイベントを発生させたり、特定の ORM (オブジェクト関係マッピング) の結果を取得したりすることが含まれます。さらに、DTO (データ転送オブジェクト)、VO (値オブジェクト)、EJB (エンタープライズ Java Bean) などの例を参照することをお勧めします。

于 2012-08-06T13:55:23.920 に答える
0

私たちの仲間の答えを補完する:

  1. addXXXListener メソッドでリスナーを追加します。
  2. removeXXXListener メソッドでリスナーを削除します。
  3. ブール (プリミティブ) フィールドには、getXXX メソッドではなく isXXX メソッドが必要です。

これは標準であるため、これに従うことが重要です。Java の多くのライブラリとテクノロジが内部で使用するためです。例: JSP の式言語、GUI ビルダーなど。

仕様: http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/

于 2012-08-06T13:49:16.173 に答える