バナー画像

Web開発をするならJavaBeansクラスはいち早く慣れておかなければならないクラスです。

今回の記事では、JavaBeansについて初心者にもわかりやすく解説していきます。

JavaBeans

JavaBeansとは

JavaBeansを一言で表すと「Javaコードで書かれた再利用可能なコンポーネントまたは仕様」となります。もう少し噛み砕いて説明すると、データを格納する倉庫の役割を持つクラスこのことで、全ての開発者が一定のルールを厳守したクラスを指します。

一定のルールとは以下を指します。

JavaBeansの仕様
  • java.io.Serializableインターフェースを実装する
  • クラス指定はpublicのみに固定
  • コンストラクタを指定する(publicで固定し引数はつけない)
  • プロパティ(クラスのメンバ変数)はprivateで指定する
  • setter/getterメソッドを作る
  • カプセル化(隠蔽化)する
  • クラス名の最後にはBeanと付ける(例:SampleBean など)

JavaBeansの仕様を踏まえたクラス

簡単な解説が完了したところで、実際にコードを見ながら説明していきます。

import java.io.Serializable;

public class SampleBean implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private String name;
    private String age;

    public SampleBean() {}

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

    public void setAge(String age) {this.age = age;}
    public String getAge() {return this.age;}
}

以下はシリアライズに関する項目です。1セットで覚えてください。

シリアライズに関する3つの項目

java.io.Serializableインターフェースを実装することが前提なので、”java.io.Serializable”をインポートしています。

更に、シリアライズを行う場合はその対象となるクラスにjava.io.Serializableインターフェースを”implements”しなければなりません。

またシリアライズを実装した場合には”serialVersionUID”という定数を定義する必要もあります。

JavaBeansの仕様に沿ってクラスを定義すると上のコードのようになります。

またsetter/getterメソッドには命名規則があります。具体的には以下の通りとなります。

setter/getterの命名規則

setterを記述する場合には「set + プロパティ(プロパティの先頭文字は大文字にする)」

getterを記述する場合には「get + プロパティ(プロパティの先頭文字は大文字にする)」

JavaBeansクラスでデータを扱ってみる

次のコードを見てください。

/* SampleBean.java */
import java.io.Serializable;

public class SampleBean implements Serializable {
	// static final long serialVersionUIDが必要
    private static final long serialVersionUID = 1L;
    
    // プロパティ(メンバ変数)
    private String name;
    private int age;
    
    // コンストラクタの
    public SampleBean() {}
    
    // プロパティnameのsetter、getter
    public void setName(String name) {this.name = name;}
    public String getName() {return this.name;}
    
    // プロパティageのsetter、getter
    public void setAge(int age) {this.age = age;}
    public int getAge() {return this.age;}
}

/* sampleJava.java */
public class sampleJava {

	public static void main(String[] args) {

		SampleBean sampleBean = new SampleBean();
		sampleBean.setName("山田太郎");
		sampleBean.setAge(20);
		
		System.out.println("Name:" + sampleBean.getName() + " Age:" + sampleBean.getAge());

	}

}

実行結果

Name:山田太郎 Age:20

このコードでは、mainクラス内に「SampleBean sampleBean = new SampleBean();」でインスタンスを作成し、setterメソッドでJavaBeansクラスにデータを渡しています。

そして最後にgetterメソッドを使いJavaBeansクラスに格納されているデータを取得し表示させるという流れになっています。

なお今回はシリアライズの記事ではないことから説明は省略していますが、JavaBeansクラスに Serializable を implements していますので、java.io.Serializableをimportする必要があるため、先頭で宣言しています。

Serializableについて

先にも述べましたが、JavaBeansクラスはその要件としてプロパティに格納した情報を保存できる必要があるため、Serializableインターフェイスの実装クラスとする必要があります。
(絶対的に必要なわけではありませんが、必要な場合が非常に多いため実装クラスで慣れておいた方が良いでしょう)

データの保存と復元

データの保存と復元については以下の通りです。

保存

Serializableインターフェイスを実装したオブジェクトは、ObjectOutputStreamクラスのwriteObjectメソッドを使用することでデータを保存できます。

writeObjectメソッドの引数にはSerializableインタフェースを実装したJavaBeansクラスのオブジェクトを指定します。

復元

保存したファイルからデータを復元するにはObjectInputStreamクラスのreadObjectメソッドを使用します。

コードを見てみる

それでは実際にコードを見てみましょう。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class sampleJava {

	public static void main(String[] args) {

		String fileName = "binary.bin";
		
		SampleBean sample_a = new SampleBean();
		sample_a.setName("山田太郎");
		sample_a.setAge(20);

        try {
            ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream(fileName)
            );
            oos.writeObject(sample_a);
            oos.close();
        } catch(Exception e) {
            e.printStackTrace();
        }

        SampleBean sample_b = null;

        try {
            ObjectInputStream ois = new ObjectInputStream(
                new FileInputStream(fileName)
            );
            sample_b = (SampleBean)ois.readObject();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }

        System.out.println(sample_b.getName() + ", " + sample_b.getAge());

    }

}

実行結果

山田太郎, 20

このコードではまず、メインクラスで”binary.bin”という空のバイナリファイルを作成しています。

次にsetterメソッドでデータを登録し、オブジェクトのデータをバイナリに書き込んだ後もう一つ新たにインスタンスを生成しています。

更に、新たに作成したインスタンスにバイナリに保存してあるデータを読み込みをれを表示させるといった流れとなります。

実行結果からもわかるように、Serializableインタフェースを実装すればいつでもインスタンスに復元することが可能です。

まとめ

今回はJavaBeansクラスについて解説してきました。

JavaBeansクラスはJSPやサーブレットでもアクティブタグで利用することが出来る大変便利なコンポーネントです。

何度も見直しながら学習し、いち早くマスターしてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。