3

この質問のために、次のプライベート変数で Person を呼び出します。

String name
int age

これらにはそれぞれゲッターとセッターがあります。今、私Map<String, String>は次のエントリも持っています:

name, phil
age, 35

クラス Person 内のすべてのセッター メソッドのリストを設定し、このリストをループして、マップの値を使用して各メソッドを呼び出したいと思います。

これに近い例をネット上で見ることができないので、これは可能ですか。例は非常に高く評価されています。

4

4 に答える 4

14

確かにそれは可能です!これを行うことで、「set」で始まるすべてのメソッドを取得できます。

Class curClass = myclass.class;
Method[] allMethods = curClass.getMethods();
List<Method> setters = new ArrayList<Method>();
for(Method method : allMethods) {
    if(method.getName().startsWith("set")) {
        setters.add(method);
    }
}

これでメソッドが揃いました。クラスのインスタンスに対してそれらを呼び出す方法を既に知っていますか?

于 2012-05-08T21:46:07.983 に答える
2

Apache Commons BeanUtilsBeanUtils.populate()から)を試しましたか?

BeanUtils.populate(yourObject, propertiesMap);
于 2012-05-08T21:50:14.023 に答える
0

ライブラリ、 ApacheCommonsBeanUtilsを使用できると思います。フィールドと値のペアを含むマップがある場合、クラスPropertyUtilsは次のことに役立ちます。

Person person = new Person();
for(Map.Entry<String, Object> entry : map.entrySet())
    PropertyUtils.setProperty(person, entry.getKey(), entry.getValue());
于 2012-05-08T21:49:16.497 に答える