今回はアクセッサ (getter) メソッドとミューテータ (setter) メソッドで異なる型が宣言されている場合を見ていきます。
対象とするオブジェクトの定義
プロパティを取得するオブジェクトの定義。
Java オブジェクト
アクセッサとミューテータで型が異なるようにしますが、それらが親子関係はないようにします。 Java で定義されている4つのアクセス修飾子についてそれぞれアクセッサ、ミューテータを定義しましょう。 また、isXxxx() という名前のアクセッサは返り値が boolean にしか使わないと思うので、ミューテータの型を boolean 以外にしています:
public class TypeDifferentJavaVean { private Number getPrivate(){return null;} private void setPrivate(String value){} Number getPackage(){return null;} void setPackage(String value){} protected Number getProtected(){return null;} protected void setProtected(String value){} public Number getPublic(){return null;} public void setPublic(String value){} //********** Boolean ********** private boolean isPrivateBoolean(){return false;} private void setPrivateBoolean(String value){} boolean isPackageBoolean(){return false;} void setPackageBoolean(String value){} protected boolean isProtectedBoolean(){return false;} protected void setProtectedBoolean(String value){} public boolean isPublicBoolean(){return false;} public void setPublicBoolean(String value){} }
Groovy オブジェクト
Groovy の場合も、Java と同じようにアクセス修飾子のそれぞれについてアクセッサ、ミューテータを定義しています:
class TypeDifferentGroovyVean { private Number getPrivateType(){null} private void setPrivateType(String value){} protected Number getProtectedType(){null} protected void setProtectedType(String value){} Number getPublicType(){null} void setPublicType(String value){} //********** Boolean ********** private boolean isPrivateBoolean(){false} private void setPrivateBoolean(String value){} protected boolean isProtectedBoolean(){false} protected void setProtectedBoolean(String value){} boolean isPublicBoolean(){false} void setPublicBoolean(String value){} }
プロパティ
では、「プロパティかどうか」の結果です。
- 「☆」はプロパティとして認識される
- 「×」はプロパティとして認識されない
です。
Java
()内は boolean 型の場合です。 この関連の記事では常にそうします。 Object ( boolean )
スコープ | GroovyBeans | Inspector | JavaBeans | MetaClass |
---|---|---|---|---|
private | ☆ ( × ) | ☆ ( ☆ ) | × ( × ) | ☆ ( ☆ ) |
package | ☆ ( × ) | ☆ ( ☆ ) | × ( × ) | ☆ ( ☆ ) |
protected | ☆ ( × ) | ☆ ( ☆ ) | × ( × ) | ☆ ( ☆ ) |
public | ☆ ( ☆ ) | ☆ ( ☆ ) | ☆ ( ☆ ) | ☆ ( ☆ ) |
Groovy
スコープ | GroovyBeans | Inspector | JavaBeans | MetaClass |
---|---|---|---|---|
private | ☆ ( × ) | ☆ ( ☆ ) | × ( × ) | ☆ ( ☆ ) |
protected | ☆ ( × ) | ☆ ( ☆ ) | × ( × ) | ☆ ( ☆ ) |
public | ☆ ( ☆ ) | ☆ ( ☆ ) | ☆ ( ☆ ) | ☆ ( ☆ ) |
まとめ
今回の場合でも、Java オブジェクトと Groovy オブジェクトは同じものとして扱ってよいようです。 また、宣言が public なら、Java だろうが Groovy だろうが、getXxxx() だろうが isXxxx() だろうが、プロパティとして認識されます。
- 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 146回
- この商品を含むブログ (121件) を見る