- - PR -
クラス内のフィールドを取得する関数の一覧
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-12-08 21:57
みなさんこんにちは。
どんたくおです。 たとえば、以下のようなクラスがあるとします。 public class Hoge { private String title; private String book_id; private String book_name; public void getTitle() { return this.title; } public void getBook_id() { return this.book_id; } public void getBook_name() { return this.book_name; } public Hoge() { } } たとえば、このクラスの中で、フィールドをセットする Hoge#getTitle Hoge#getBook_id Hoge#getBook_name は、 Hoge h = new Hoge(); String title = h.getTitle(); とすると、titleフィールドの値が取得できます。 ただ、こうするにはインスタンスを作成し、titleフィールド値を取得する getTitle という関数名を知っている必要があります。 Hogeというクラスのフィールド値を取得する関数を取得し実行する方法など ありますでしょうか。 Class.getMethods() を使用すれば、できそうかなと思ったのですが、可能なのでしょうか。 ご存知の方がおいでましたら、ご教授いただけるとさいわいです。 // Strutsはどうやって、ActionFormに値をセットしているのでしょうかね。 | ||||
|
投稿日時: 2005-12-08 22:08
java.lang.reflect パッケージを調べられてはどうでしょう
_________________ # Future Is On Fire ! | ||||
|
投稿日時: 2005-12-08 23:01
例外処理をしていないですが、 java.lang.Class/java.lang.reflect.Methodで実行可能です。 インスタンスのメソッドを実行するには、 invokeメソッドに対象のインスタンスを指定する必要がありますが、 クラスのメソッドを実行するだけなら、 invokeメソッドの第一引数にnullを指定すればOKです。 | ||||
|
投稿日時: 2005-12-09 16:06
117さん
かつのりさん ご返信いただきまして、ありがとうございます。 117さんと、かつのりさんにご助言いただきました、java.lang.reflectパッケージを確認しました。 最終的に、マップにbeanのフィールド値を全部格納したかったため、以下のようにしました。 // 例外処理は、いれてません。 Field[] fields = o.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { String name = fields[i].getName(); String p = (String)PropertyUtils.getProperty(o, name); m.put(name, p); } reflectパッケージもはじめてしったのですが、jakarta commonsのBeanUtilsはすごい便利そうです。 みなさま、ありがとうございました。 |
1