如果我有两个变量:
Object obj;
String methodName = "getName";
在不知道班级的情况下obj
,我怎样才能调用由methodName
on it?
被调用的方法没有参数,并且有一个String
返回值。它是Java bean 的 getter.
从臀部开始编码,它会是这样的:
java.lang.reflect.Method method;
try {
method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..);
} catch (SecurityException e) { ... }
catch (NoSuchMethodException e) { ... }
参数标识您需要的非常具体的方法(如果有多个重载可用,如果该方法没有参数,则只给出methodName
).
然后你通过调用调用该方法
try {
method.invoke(obj, arg1, arg2,...);
} catch (IllegalArgumentException e) { ... }
catch (IllegalAccessException e) { ... }
catch (InvocationTargetException e) { ... }
再次,省略中的参数.invoke
,如果你没有的话。但是是的。阅读Java反射 http://java.sun.com/docs/books/tutorial/reflect/index.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)