JavaBeanの作成の詳細について
2228 ワード
例えばUser classを作成する
通常モード:
setterはvoid、変数、getterを返し、setterはJavabean仕様に合致します.
拡張モード:
setterはthis(現在のbeanインスタンス)を返しますが、setterのモードはJavaBeanの仕様ではありません.
setterがこのように書くメリットは、設定値を連続的にポイント法でナビゲートできることです.
user.setId("020-001").setUser("toby");
チェーン呼び出しは一般的にはあまり役に立たないようですが、プロパティの数が多すぎる場合はコードを節約できます.
補足:
Introspectorクラスを使用して、あるbeanのPropertyDescriptorオブジェクトのリストを取得し、そのbeanのプロパティ名とタイプを巡回表示します.この方法はバグの位置決めに非常に有用である.(「ibatis in action」からの紹介)
通常モード:
setterはvoid、変数、getterを返し、setterはJavabean仕様に合致します.
public class User {
private int id;
private String user;
public User(){}
public User(int id , String user){
this.id = id;
this.user = user;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user){
this.user = user;
}
}
拡張モード:
setterはthis(現在のbeanインスタンス)を返しますが、setterのモードはJavaBeanの仕様ではありません.
setterがこのように書くメリットは、設定値を連続的にポイント法でナビゲートできることです.
user.setId("020-001").setUser("toby");
public class User{
private int id;
private String user;
public User(){}
public User(int id , String user){
this.id = id;
this.user = user;
}
public int getId() {
return id;
}
public User setId(int id) {
this.id = id;
return this; // has return
}
public String getUser() {
return user;
}
public User setUser(String user){
this.user = user;
return this; // has return
}
}
チェーン呼び出しは一般的にはあまり役に立たないようですが、プロパティの数が多すぎる場合はコードを節約できます.
補足:
public void listPropertyNames(Class c) throws IntrospectionException{
PropertyDescriptor [] pd;
pd = Introspector.getBeanInfo(c).getPropertyDescriptors();
for(int i=0;i<pd.length;i++){
System.out.println(pd[i].getName()
+ "(" + pd[i].getProperty().getName() + ")");
}
}
//listPropertyNames(User.class)
//output ->class(java.lang.Class)
// id(int)
// user(java.lang.String)
Introspectorクラスを使用して、あるbeanのPropertyDescriptorオブジェクトのリストを取得し、そのbeanのプロパティ名とタイプを巡回表示します.この方法はバグの位置決めに非常に有用である.(「ibatis in action」からの紹介)