当前位置:编程学习 > JAVA >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,