今、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 の中を
繰り返さないといけないので・・。
ご教授、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
私もちょっと考えてみましたが、結局【値がsetされているかどうか】ということは都度違うわけなので、毎回全てのプロパティ値を精査しなくてはならないのは避けて通れないのではないでしょうか。
もし、リフレクションにおけるコストを懸念されるのであれば、このObjectの基底クラスに定義されたプロパティ値でsetされているもののみを返却するメソッドをabstractで定義し(Interfaceでも可)、実装する、、、みたいな。これだと直接的なので呼び出し時にリフレクションによるコストは削減されると思いますが、実装が必須になるから面倒かな・・・。
もしくは、基底クラスにMapかListを用意して、getter,setterが呼び出された場合必ずそのMapやListに対してプロパティに値がsetされた情報、もしくはremoveされた情報を溜め込むようにして、必要な場合にそのMapかListを返却するようにする。。。これはこれで、getter,setter時にコストがかかりますが。。。
ただ、私も実装するのであれば、takuya_mさんのような実装になりそうな気がしますが・・・。
有効な回答でなくて申し訳ありません・・・。
回答ありがとうございます。
自分も、何度も何度も考えたのですが、braver_2004さんの回答通りです・・。
もう少し考えたいと思います・・
今回は、本当にありがとうございます・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- JavaScript Json のキーと値の出力の違いについて 2 2022/06/14 20:22
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java初級 引数に適用できません
-
C# 点の描き方をおしえてくだ...
-
javaに"search"という関数 or ...
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
コマンドライン引数のチェック
-
public static void main (Stri...
-
Javaの関数名が長い?
-
メソッド/ルーチン
-
レコード件数の表示
-
javaのAPIの読み方がわかりません
-
説明文書でのメソッド・変数の...
-
Javaの問題なんですが、練習14-...
-
return new使用時
-
StringBufferからStringへキャ...
-
YYYYMMDD書式の日付に対する適...
-
Double,Longをファイルに書き込み
-
メソッド宣言の戻り値の型にク...
-
System.out.print
-
戻り値の異なるメソッドの多重...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
なぜprotected overrideなのか
-
Strutsでチェックボックスの値...
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
C# 点の描き方をおしえてくだ...
-
レコード件数の表示
-
public static void main (Stri...
-
StringBufferからStringへキャ...
-
YYYYMMDD書式の日付に対する適...
-
C# でメソッドに送られてきたOb...
-
シェルスクリプトからのJavaメ...
-
C# の ByVal と ByRef について
-
Fileの読み取り専用の解除
-
CSVから読み込んだデータの保持...
-
メソッドの引数に指定されてい...
-
javaに"search"という関数 or ...
-
Javaのメモリの管理
-
Java初心者です、エラーの意味...
おすすめ情報