こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

メソッド取得方法

今、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 の中を
繰り返さないといけないので・・。


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

投稿日時 - 2006-10-11 01:48:38

QNo.2464976

すぐに回答ほしいです

質問者が選んだベストアンサー

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

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

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

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

有効な回答でなくて申し訳ありません・・・。

投稿日時 - 2006-10-11 10:49:23

お礼

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

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

投稿日時 - 2006-10-12 00:24:22

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問