2017-04-19 7 views
1

なぜjavabeansが必要なのか、どうしてJavaのオブジェクトクラス(ルートクラス)にjavabeanの機能を直接配置したのか理解できないのですか?javabeanの機能がルートJAVAオブジェクトに組み込まれていないのはなぜですか?

オブジェクト(インスタンス)をJava Beanに変換することで、Bean内のすべてのオブジェクトに対してシリアライズ可能なような利点が得られます。しかし、そうであれば、別のBeanクラスを持っていても、なぜ、ルートオブジェクトクラスに組み込まれているのではないのですか?

これはわかりませんか?

答えて

2

あなたは正しく理解していません。 Beanである実際のJavaクラスまたはインタフェースはありません。それは単なるパターン、慣習です。

基本的には、クラスはpublic getXxxメソッドとsetXxxメソッドを介してそのプロパティの一部またはすべてを公開します(XXXはプロパティの名前)。

一般に、Beanは直列化可能であるべきですが、どのクラスも直列化可能であり、Beanの規約に従う必要はありません。

+0

okこれは問題を解決します。では、なぜオブジェクトのセットをBeanに入れて直接アクセスするのでしょうか?一部のオブジェクトは他のオブジェクトにリンクされているため、オブジェクトをカプセル化し、オブジェクトの一貫性や管理性を保証するのに最適ですか? – coderg

+0

そして、これらのプロパティを設定するBeanを作成すると必要なあらゆる状況に対してコンストラクタを作成するだけではどうですか? – coderg

+0

セッターは悪い考えです!私はフィールドが最終的なものにしたいので、コンパイラはそれらが一度正確に初期化されるようにします。セッターは不変性を破ります。 – GhostCat

0

Beanパターンの引数のないコンストラクタの部分については、デフォルトでは引数なしのコンストラクタがありますが、別のコンストラクタを作成するとすぐに、おそらくそれが削除されます。しかし、引数のないコンストラクタが常に必要な場合は、コンストラクタの引数で指定された最終フィールドを持つクラスがあれば、これは本当に面倒です。次に、すべてをnullに割り当てる引数なしのコンストラクタが必要です。または、no引数を使用しないように他の開発者に通知する例外をスローします。これはちょうど醜いです。

1

灰色の回答以外:Beanのインターフェースやメソッドがある場合でも、すべての果物がリンゴではありません!

意味:ちょうど豆ではないクラスのzillionsがあります。

それ以外では、javaと同じようにシリアル化すると、それほど役に立ちません。今日私が主にJSONにシリアライズする正当な理由があります。言い換えれば、すべてのクラスが既定でSerializeableを実装しているわけではないので、私たちはかなり満足しています。 ObjectはBeanであるためです。

関連する問題