public class foo
{
private String _name;
private String _bar;
public String getName() {
return _name;
}
public void setName(String name) {
_name = name;
}
public String getBar() {
return _bar;
}
public void setBarn(String bar) {
_bar = bar;
}
}
上記のクラスを持っていれば、リフレクションを使ってゲッターとセッターで定義されたプロパティをリストできますか?私は以下の方法を試しましたが、うまくいきません。Field[] fields
は空のままです。私は.Netでこれを行うことができますが、Javaは非常に異なる動物です。間違った木をまもっているのですか?Java Reflection - クラスのプロパティ(ゲッターとセッター)をリストする
private HashMap<String, String> getHashMap(Object obj) {
HashMap<String, String> map = new HashMap<String, String>();
Class<?> cls = obj.getClass();
Field fields[] = cls.getFields();
for(Field f : fields) {
String name = f.getName();
String value = f.get(obj).toString();
map.put(name, value);
}
return map;
}
またセッターとゲッター多分悪、私はちょうどこれをドロップする必要がありますか?
ありがとうzacheusz。それはうまくいくが、getterとsetterによって公開されたフィールドだけでなく、すべてのプライベートフィールドがリストされます。実際には私のクラスには_nameと_bar以上のものがあります。 – Phil
getterとsetterが必要な場合は、 'getDeclaredMethods'メソッドを取得する必要があります。代わりに[BeanUtils](http://commons.apache.org/beanutils/)を使用することをお勧めします;) booleanのJava gettersは 'is'と' get'で始めることができます。 – zacheusz
これは最も実現可能なようですが、実際にはdalvik VMですが、残念ながらIntrospectorは利用できません(そうでなければ、私はそのことに気づきました)。 – Phil