invoke 时实际参数为 Map<String,String> x = new HahsMap();java 反射
声明成 public void _preDoEdit(HashMap<String, String> sqlMap) 可以调用
声明成 public void _preDoEdit(Map<String, String> sqlMap) 不能调用,
是啥情况求高手指点一下

解决方案 »

  1.   

    这里没看懂你的意思
    invoke()方法里面的对像是代理对象的本生,而不是他的超类
    举例:
    Class A
    Class B extends A
    你要反射B的就不能用A去代理
    况且Map是接口
      

  2.   

    出错的地方是这个 
    method = c.getDeclaredMethod(callbackFun,ca);
    提示没有找到方法 ca 是一个 java.util.HashMap
    callbackFun 有一个参数,声明的是 x(Map) 我是没明白他为啥会找不到方法了
      

  3.   

    真是很模糊哦,贴个源码撒
    Class a;
    a.getDeclaredMethod(callbackFun,ca);callbackFun是a的一个方法名称ca就是该方法的参数列表对应的值
      

  4.   

    加上 isAssignableFrom 方法判断一下
    boolean isAssignableFrom(Class<?> cls) 
              判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。 类似情况若方法重载的时候还是不行。