web-dev-qa-db-ja.com

Java Bean?

可能性のある複製:
豆のポイントは何ですか?

Javabeanとは何ですか?それは何のために使われますか?そして、いくつかのコード例は何ですか?私はそれがゲッターとセッターメソッドに関係する何かに使用されていると聞きましたか?私はJava Beanが何であるか、そしてあなたがそれにアクセスする場所についても非常に混乱しています。

34
Ryan Glen

Java Beanは、通常のJavaクラスであり、パブリックgetterおよびsetterメソッドを持つプライベートプロパティがあります。

通常、Java Beanはヘルパークラスとして使用されます。

例-

public class User implements Java.io.Serializable {

    private String name;
    private Integer age;

    public String getName(){
        return this.name;
    }

    public void setName(String name){
        this.name = name;
    }

    public Integer getAge(){
        return this.age;
    }

    public void setAge(Integer age){
        this.age = age;
    }
}

Serializableの実装は必須ではありませんが、JavabeansをJavaのメモリの外に永続化または転送したい場合、非常に便利です。ハードディスク内またはネットワーク経由。

JavaBeansが使用される場所?

49
Pramod Kumar

JavaBeansは、Java用の再利用可能なソフトウェアコンポーネントです。実際には、特定の規約に準拠したJavaプログラミング言語で記述されたクラスです。多くのオブジェクトを単一のオブジェクト(Bean)にカプセル化するために使用されます。複数の個別のオブジェクトとしてではなく、単一のBeanオブジェクト。JavaBeanはJavaオブジェクトであり、シリアル化可能で、引数が0のコンストラクタを持ち、ゲッターメソッドとセッターメソッドを使用してプロパティにアクセスできます。

長所

  • Beanは、Javaの「1回書き込み、どこでも実行」パラダイムのすべての利点を取得します。
  • 別のアプリケーションに公開されるBeanのプロパティ、イベント、およびメソッドを制御できます。
  • Beanの構成に役立つ補助ソフトウェアを提供できます。
  • Beanの構成設定は永続ストレージに保存でき、後で復元できます。
  • Beanは、他のオブジェクトからイベントを受信するために登録でき、それに送信されるイベントを生成できます。

短所

  • Nullaryコンストラクターを持つクラスは、無効な状態でインスタンス化されることがあります。そのようなクラスが(何らかのフレームワークによって自動的にではなく)開発者によって手動でインスタンス化された場合、開発者はクラスが無効な状態でインスタンス化されたことに気付かない場合があります。コンパイラはそのような問題を検出できず、文書化されていても、開発者が文書を見る保証はありません。
  • すべてのプロパティにゲッターを作成し、それらの多く、ほとんど、またはすべてにセッターを作成する必要があると、膨大な量の定型コードが作成されます。

例:

package beans;

/**
 * Class <code>PersonBean</code>.
 */
public class PersonBean implements Java.io.Serializable {

    private String name;

    private boolean deceased;

    /** No-arg constructor (takes no arguments). */
    public PersonBean() {
    }

    /**
     * Property <code>name</code> (note capitalization) readable/writable.
     */
    public String getName() {
        return this.name;
    }

    /**
     * Setter for property <code>name</code>.
     * @param name
     */
    public void setName(final String name) {
        this.name = name;
    }

    /**
     * Getter for property "deceased"
     * Different syntax for a boolean field (is vs. get)
     */
    public boolean isDeceased() {
        return this.deceased;
    }

    /**
     * Setter for property <code>deceased</code>.
     * @param deceased
     */
    public void setDeceased(final boolean deceased) {
        this.deceased = deceased;
    }
}

参照 http://en.wikipedia.org/wiki/JavaBeans

21
Hemant Metalia

さて、JavaBean APIはJavaBeansに関する多くの規約を定義しています。ウィキペディアによると:

必要な規則は次のとおりです。

  • クラスには、パブリックのデフォルトコンストラクター(引数なし)が必要です。これにより、編集およびアクティベーションフレームワーク内で簡単にインスタンス化できます。
  • クラスプロパティは、標準の命名規則に従って、get、set、is(getの代わりにbooleanプロパティに使用)およびその他のメソッド(いわゆるアクセサメソッドおよびミューテータメソッド)を使用してアクセスできる必要があります。これにより、フレームワーク内のBean状態の簡単な自動検査と更新が可能になり、その多くにはさまざまなタイプのプロパティ用のカスタムエディターが含まれています。セッターは1つの引数のみを受け取る必要があります。
  • クラスはシリアル化可能でなければなりません。これにより、アプリケーションとフレームワークは、VMおよびプラットフォームに依存しない方法でBeanの状態を確実に保存、保存、および復元できます。

多くの場合、これらは、使用されるデータのモデル化に使用できるため、アプリケーションで見つけることができる最も一般的なタイプのクラスです。このようなBeanの例を以下に示します。

public class Person implements Serializable
{
  private String name;
  private boolean alive;

  public Person()
  {
    // constructor logic...
  }

  public String getName()
  {
    return name;
  }

  public void setName(String name)
  {
    this.name = name;
  }

  public boolean isAlive()
  {
    return alive;
  }

  public void setAlive(boolean alive)
  {
    this.alive = alive;
  }
}

ご覧のとおり、プロパティはゲッターとセッターに反映されています。

HTH

7
Crollster

Java BeansとNOT EJB Beansについて話している場合、ここに説明があります...

1。 JavaBeanには引数をとらないコンストラクタがあります。

2。 JavaBeanには一連のプロパティがあります。

JavaBeanには、基礎となるプロパティへのアクセスを許可するアクセサ(getXxx、またはブールプロパティの場合はisXxx)メソッドとミューテータメソッド(setXxx)があります。

番目のポイントは、Javaプライベートインスタンス変数とパブリックゲッター、セッターを含むクラス

例えば:

import Java.util.Date;

public class User {
    private Date loginDate;
    private String name;
    private String password;

    public User() { }

    public Date getLoginDate() {
        return loginDate;
    }

    public String getName() {
        return name;
    }

    public String getPassword() {
        return password;
    }

    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void delete() {
        // code to delete user from database
    }

    public void update() {
        // code to update user in database
    }

    public static User getUser(String name) {
        // code returning a new User object
        // populated from the database
    }
}
1