今、setter getter を書いたクラスから、値が set されたものだけを見つけ出し、
get メソッドを呼び出しているのですが、もっとスマートな方法はないでしょうか?



public void getSer( Object object ){

static final String KEY = "goo";
String key = null;


Method[] getMethodList = getGetMethod( object );

for (int i = 0; i < getMethodList.length; i++) {
if( getMethodList[i].getName().startsWith( KEY ))
key = getMethodList[i].invoke(object, null).toString();
}
}

このような場合、getメソッドの数だけ getMethodList の中を
繰り返さないといけないので・・。


ご教授、よろしくお願いします。

A 回答 (1件)

私もちょっと考えてみましたが、結局【値がsetされているかどうか】ということは都度違うわけなので、毎回全てのプロパティ値を精査しなくてはならないのは避けて通れないのではないでしょうか。



もし、リフレクションにおけるコストを懸念されるのであれば、このObjectの基底クラスに定義されたプロパティ値でsetされているもののみを返却するメソッドをabstractで定義し(Interfaceでも可)、実装する、、、みたいな。これだと直接的なので呼び出し時にリフレクションによるコストは削減されると思いますが、実装が必須になるから面倒かな・・・。

もしくは、基底クラスにMapかListを用意して、getter,setterが呼び出された場合必ずそのMapやListに対してプロパティに値がsetされた情報、もしくはremoveされた情報を溜め込むようにして、必要な場合にそのMapかListを返却するようにする。。。これはこれで、getter,setter時にコストがかかりますが。。。

ただ、私も実装するのであれば、takuya_mさんのような実装になりそうな気がしますが・・・。

有効な回答でなくて申し訳ありません・・・。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
自分も、何度も何度も考えたのですが、braver_2004さんの回答通りです・・。

もう少し考えたいと思います・・
今回は、本当にありがとうございます・・。

お礼日時:2006/10/12 00:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ