如何使用java反射返回getter方法匹配String

时间:2013-09-26 11:14:41

标签: java reflection

这是我的情况,我不知道是否有可能, 我需要一些想法。

我的MasterTable对象填充了数据

MasterTable MT; //already with data

方法列表

List<String> mymethods = new ArrayList<String>();
mymethods.add("getName");
mymethods.add("getLocation");

我有一个数组MasterTable方法,

Class<MasterTable> masterclass = MasterTable.class;
Method[] masterMethods = masterclass.getMethods();

我想要的是循环使用MasterTable方法,当我发现masterMethod符合我的标准时,我打印该方法的值。

e.g。

for (Method mm : masterMethods) {
if(mymethods.contains(mm.getName)){
      //print method matching MT.get Method Matching mm.getName
      System.out.println("print MT.getMethodMatchingmm.getName()");
}
}

是否可以这样做?

1 个答案:

答案 0 :(得分:1)

当然!

if (mymethods.contains(mm.getName()) {
    Object result = mm.invoke(MT);
    // do anything with result
}

我已经尝试过反过来,以避免重载方法的非想要的匹配:

public static void callGetters(Object instance, String... names)
        throws Exception {
    for (String name : names) {
        Method method = instance.getClass().getMethod(name);
        System.out.println(name + ": " + method.invoke(instance));
    }
}

/**
 * @param args
 */
public static void main(String[] args) throws Exception {
    callGetters(new MyObject(), "getName", "getLocation");
}