java invoke 参数 Map 与 HashMap的问题
invoke 时实际参数为 Map<String,String> x = new HahsMap();java 反射
声明成 public void _preDoEdit(HashMap<String, String> sqlMap) 可以调用
声明成 public void _preDoEdit(Map<String, String> sqlMap) 不能调用,
是啥情况
求高手指点一下 --------------------编程问答-------------------- 这里没看懂你的意思
invoke()方法里面的对像是代理对象的本生,而不是他的超类
举例:
Class A
Class B extends A
你要反射B的就不能用A去代理
况且Map是接口
--------------------编程问答-------------------- 出错的地方是这个
method = c.getDeclaredMethod(callbackFun,ca);
提示没有找到方法 ca 是一个 java.util.HashMap
callbackFun 有一个参数,声明的是 x(Map)
我是没明白他为啥会找不到方法了 --------------------编程问答-------------------- 真是很模糊哦,贴个源码撒
Class a;
a.getDeclaredMethod(callbackFun,ca);
callbackFun是a的一个方法名称
ca就是该方法的参数列表对应的值 --------------------编程问答-------------------- --------------------编程问答-------------------- 加上 isAssignableFrom 方法判断一下
boolean isAssignableFrom(Class<?> cls)
判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。
类似情况若方法重载的时候还是不行。
补充:Java , Java EE