这是我的情况,我不知道是否有可能, 我需要一些想法。
我的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()");
}
}
是否可以这样做?
答案 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");
}