|
||||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||
参照先:
説明
| 列挙型の概要 | |
|---|---|
| AccessType | プロパティのアクセス型です. |
| 注釈型の概要 | |
|---|---|
| BeanState | JavaBean の状態を保持するクラスであることを示す注釈です. |
| JavaBean | Aptina Beans によって BeanState で注釈されたクラスから生成された JavaBeans であることを示す注釈です. |
| Property | プロパティとしてアクセス可能なフィールドを注釈します. |
JavaBeans を生成するためのフィールドを定義した状態クラスに付与する注釈型や列挙型を提供します.
Aptina Beans の提供する Annotation Processor
(BeansProcessor) は,
BeanState で注釈されたクラス (以下「状態クラス」) からサブクラス
(以下「Bean クラス」) を生成します.
Bean クラスは,状態クラスに定義されたフィールドに対する getter/setter メソッドを持つ JavaBeans です.
BeanState で注釈された状態クラスは次のようなクラスでなければなりません.
public なクラスであること.final クラスではないこと.
状態クラスから生成される Bean クラスは JavaBean で注釈され,
状態クラスと同じパッケージに生成されます.
Bean クラスの名前は次のようになります.
Abstract で始まっている場合Abstract を除去した名前になります.State で終わっている場合State を除去した名前になります.Bean で終わっている場合Impl を付加した名前になります.Bean を付加した名前になります.例
| 状態クラスの名前 | 生成される Bean クラスの名前 |
|---|---|
AbstractHogeBean |
HogeBean |
HogeBeanState |
HogeBean |
HogeBean |
HogeBeanImpl |
Hoge |
HogeBean |
状態クラスの次の条件を満たすフィールドが Bean クラスのプロパティとなります.
static,private,public の修飾子が付けられていないこと.Property アノテーションで
AccessType.NONE が指定されていないこと.
状態クラスのフィールドに
Property
アノテーションを付与し,
Property.access()
要素で getter/setter をどのように生成するか指定することができます.
Property.access()
要素の型は
AccessType
です.
AccessType
の値
|
説明 |
|---|---|
AccessType.NONE |
プロパティとしてアクセスしません (getter/setter とも生成されません). |
AccessType.READ_ONLY |
参照のみ可能なプロパティです (getter のみ生成されます). |
AccessType.WRITE_ONLY |
変更のみ可能なプロパティです (setter のみ生成されます).
フィールドが final の場合はエラーになります.
|
AccessType.READ_WRITE(デフォルト) |
参照・変更とも可能なプロパティです (getter/setter とも生成されます).
フィールドが final の場合, setter は生成されません.
|
配列型のプロパティには, 標準の getter/setter メソッドに加えて次のメソッドが生成されます.
public <PropertyType> get<PropertyName>(int n)
public void set<PropertyName>(int n, <PoerptyType> <propertyName>)
BeanState.boundProperties() に true を指定すると
bound プロパティ (PropertyChangeListener) がサポートされ, 次のメソッドが生成されます.
public void addPropertyChangeListener(PropertyChangeListener listener)
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
public void removePropertyChangeListener(PropertyChangeListener listener)
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
変更可能なプロパティごとに次のメソッドが生成されます.
public void add<PropertyName>Listener(PropertyChangeListener listener)
public void remove<PropertyName>Listener(PropertyChangeListener listener)
BeanState.constrainedProperties() に true を指定すると
constrained プロパティ (VetoableChangeListener) がサポートされ, 次のメソッドが生成されます.
public void addVetoableChangeListener(VetoableChangeListener listener)
public void addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
public void removeVetoableChangeListener(VetoableChangeListener listener)
public void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
変更可能なプロパティごとに次のメソッドが生成されます.
public void add<PropertyName>Listener(VetoableChangeListener listener)
public void remove<PropertyName>Listener(VetoableChangeListener listener)
Bean クラスは状態クラスの非 private コンストラクタを引き継ぎます. 引き継ぐことのできるコンストラクタが一つもない場合はエラーとなります.
次に状態クラスの例を示します.
@BeanState
public abstract class FooBeanState {
protected String aaa; // getter/setter とも生成されます
final String bbb; // final なので getter のみ生成されます
@Property(access=AccessType.NONE)
public String ccc; // AccessType.NONE なので getter/setter とも生成されません
@Property(access=AccessType.READ_ONLY)
public String ddd; // AccessType.READ_ONLY なので getter のみ生成されます
@Property(access=AccessType.WRITE_ONLY)
public String eee; // AccessType.WRITE_ONLY なので setter のみ生成されます
@Property(access=AccessType.READ_WRITE)
public String fff; // AccessType.READ_WRITE なので getter/setter とも生成されます
private String ggg; // private なので getter/setter とも生成されません
public String hhh; // public なので getter/setter とも生成されません
static String iii; // static なので getter/setter とも生成されません
}
BeansProcessor は,
上記の状態クラスから次の Bean クラスを生成します.
@JavaBean
public class FooBean extends FooBeanState {
public FooBean() {
super();
}
public String getAaa() {
return aaa;
}
public void setAaa(String aaa) {
this.aaa = aaa;
}
public String getBbb() {
return bbb;
}
public String getDdd() {
return ddd;
}
public void setEee(String eee) {
this.eee = eee;
}
public String getFff() {
return fff;
}
public void setFff(String fff) {
this.fff = fff;
}
}
|
||||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||