JavaBeansとは
値をまとめて格納するクラス(のインスタンス)。
ルールを守ったクラスを作成する必要がある。
ルール①:直列化可能である(java.io.Serializableを実装している)
ルール②:クラスはpublicでパッケージに所属する。
ルール③:publicで引数のないコンストラクタを持つ。※追加で引数を持つコンストラクタを定義しても良い
ルール④:フィールドはカプセル化されている。
ルール⑤:命名規則に従ったgetter/setterを持つ。
import java.io.Serializable; //ルール②:クラスはpublicでパッケージに所属する public class Member implements Serializable { // ルール①:直列化可能である // シリアライズ(なくても良い) private static final long serialVersionUID = 4405843158529915724L; // プロパティ変数 private String name; //ルール④:フィールドはカプセル化されている private int age; //ルール④:フィールドはカプセル化されている // コンストラクタ public Member(){ } //ルール③:publicで引数のないコンストラクタを持つ //ルール⑤:命名規則に従ったgetter/setterを持つ public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } }
作り方
1.プロパティ変数を作成
public class Member { // プロパティ変数 private String name; private int age; }
2.getterおよびsetterの作成
ソース>getterおよびsetterの作成
public class Member { // プロパティ変数 private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
toStringの作成
public class Member { // プロパティ変数 private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "SampleVO [name=" + name + ", age=" + age + "]"; } }
使い方
public class Main { public static void main(String[] args){ // インスタンス作成 Member member = new Member(); //set member.setName("なまえ"); //get System.out.println(member.getName()); //toString System.out.println(member); } }
シリアライズ化
インスタンスをファイルに保存し、復元することができるようになる
Serializableインターフェイスを実装することでシリアライズ化される
public class Member implements Serializable {
serialVersionUID
クラス構造のハッシュ値のようなもの。必須ではない。
記載があればデシリアライズ時にUIDを確認し、シリアライズ時と異なっていたらエラーになる。
コードに変更があった時には、この値を毎回変える
※Ctrl+1から作成できる
※serialVersionUIDがないとエラーになる設定方法
シリアライズ、デシリアライズ方法
// インスタンスの作成 Human human = new Human(); human.setName("高橋"); // シリアライズ try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("human.txt"))) { oos.writeObject(human); } catch (IOException e) { e.printStackTrace(); } // デシリアライズ try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("human.txt"))) { Human deHuman = (Human) ois.readObject(); System.out.println(deHuman.getName()); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); }