使用反射调用类中的所有setter

use*_*163 3 java reflection invoke

我有一个域对象,为了这个问题的目的,我将使用以下私有变量调用Person:

String name
int age
Run Code Online (Sandbox Code Playgroud)

每个人都有吸气剂和二传手.现在我还有Map<String, String>以下条目:

name, phil
age, 35
Run Code Online (Sandbox Code Playgroud)

我想在Person类中填充所有setter方法的列表,然后循环遍历此列表并使用map中的值调用每个方法.

这是否可能,因为我在网上看不到任何接近这个的例子.非常感谢例子.

ame*_*ren 13

当然有可能!您可以通过执行以下操作获得以"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);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你已经掌握了这些方法.你是否已经知道如何为你的班级实例打电话?