/**
* <pre>
* <h3>通过反射执行某个方法,并将数据集放入cache中</h3>
* </pre>
*
* 方法实现呆完成
*
* @param key
* 缓存key
* @param _class
* 类名
* @param methodName
* 类方法名
* @param paramType
* 方法参数类型
* @param args
* 方法参数值
*/
public void reflect(String key, Class<T> _class, String methodName,
Class<Object>[] paramType, Object... args) {
try {
// cache判断
// 如果cache中没有这个值,则调用方法填充cache
Method method = _class.getMethod(methodName, paramType);
method.invoke(_class, args);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
执行到:
method.invoke(_class, args);
报错:
object is not an instance of declaring class
说明Class没有实例化;
解决办法:
由于没有实力化可以有如下两种方法:
1、反射方法定义成为static的,故被反射类就不需要实例化;
2、method.invoke(_class.newInstance(), args);
本文介绍了一种使用反射来执行指定方法并将结果存入缓存的方法。当缓存中不存在所需数据时,该方法会通过反射调用指定类的方法来获取数据并将其填充到缓存中。文章还讨论了在反射调用过程中遇到的问题及其解决方案。

3662

被折叠的 条评论
为什么被折叠?



