java反射泛型异常:argument type mismatch解决方案
来源:互联网 发布:dva矩阵吸大 编辑:程序博客网 时间:2024/05/12 13:19
最近使用java反射泛型的时候出现异常:argument type mismatch,经过debug排查终于解决,废话不说,直接上代码:
javabean及相应的执行函数如下所示:
public class RequestUploadXmlData<T> {private Root<T> root;/** * @return the root */public Root<T> getRoot() {return root;}/** * @param root * the root to set */public void setRoot(Root<T> root) {this.root = root;}}
public class Root<T> {private T vehispara;/** * @return the vehispara */public T getVehispara() {return vehispara;}/** * @param vehispara the vehispara to set */public void setVehispara(T vehispara) {this.vehispara = vehispara;}}
public <T> String upload(String jkid, String WriteXmlDoc, Class<T> obj, Object objDao) throws Exception {JSONObject xmlJSONObj = XML.toJSONObject(WriteXmlDoc);RequestUploadXmlData<T> requestUploadXmlData = JsonUtil.fromRequest(xmlJSONObj.toString(),new TypeToken<RequestUploadXmlData<T>>() {}.getType(), "yyyy-MM-dd HH:mm:ss"); String webResult = WebServiceUtil.upload("", jkid, WriteXmlDoc);xmlJSONObj = XML.toJSONObject(webResult);UploadResult uploadResult = JsonUtil.fromRequest(xmlJSONObj.toString(), UploadResult.class);/** 如果上传成功则插入数据 */if (CustomData.CODE_SUCCESS.equals(uploadResult.getRoot().getHead().getCode())) {Class<? extends Object> objClass = objDao.getClass();Method declaredMethod = objClass.getMethod("insert", obj);T vehispara = requestUploadXmlData.getRoot().getVehispara();declaredMethod.invoke(objDao, vehispara);/*tdlxxDao.insert(requestUploadXmlData.getRoot().getVehispara());*/}return webResult;}
执行后报异常:java.lang.IllegalArgumentException: argument type mismatch
解决方案
public <T> String upload(String jkid, String WriteXmlDoc, Class<T> obj, Object objDao) throws Exception {JSONObject xmlJSONObj = XML.toJSONObject(WriteXmlDoc);RequestUploadXmlData<T> requestUploadXmlData = JsonUtil.fromRequest(xmlJSONObj.toString(),new TypeToken<RequestUploadXmlData<T>>() {}.getType(), "yyyy-MM-dd HH:mm:ss"); String webResult = WebServiceUtil.upload("", jkid, WriteXmlDoc);xmlJSONObj = XML.toJSONObject(webResult);UploadResult uploadResult = JsonUtil.fromRequest(xmlJSONObj.toString(), UploadResult.class);/** 如果上传成功则插入数据 */if (CustomData.CODE_SUCCESS.equals(uploadResult.getRoot().getHead().getCode())) {Class<? extends Object> objClass = objDao.getClass();Method declaredMethod = objClass.getMethod("insert", obj);/** 使用json进行类型转换,避免getVehispara返回map<String>导致异常:argument type mismatch */String json = JsonUtil.toJson(requestUploadXmlData.getRoot().getVehispara());T vehispara = JsonUtil.fromRequest(json, obj);declaredMethod.invoke(objDao, vehispara);/*tdlxxDao.insert(requestUploadXmlData.getRoot().getVehispara());*/}return webResult;}
原因是requestUploadXmlData.getRoot().getVehispara()返回的是map<String>类型,导致类型不匹配,至于为什么是这种类型,抱歉,目前没时间研究,我也不知道。
阅读全文
0 0
- java反射泛型异常:argument type mismatch解决方案
- 利用反射原理调用方法抛出异常:argument type mismatch
- javafx argument type mismatch 异常
- struts上传文件异常argument type mismatch
- 关于“java.lang.IllegalArgumentException: argument type mismatch”
- java.lang.IllegalArgumentException: argument type mismatch
- java.lang.IllegalArgumentException: argument type mismatch 错误
- java.lang.IllegalArgumentException: argument type mismatch
- Cause: java.lang.IllegalArgumentException: argument type mismatch
- java.lang.IllegalArgumentException: argument type mismatch
- java.lang.IllegalArgumentException: argument type mismatch
- java.lang.IllegalArgumentException: argument type mismatch
- web开发时java.lang.IllegalArgumentException: argument type mismatch异常及解决方法
- 实体类映射数据库出现:异常:java.lang.IllegalArgumentException: argument type mismatch
- argument type mismatch
- argument type mismatch
- argument type mismatch
- argument type mismatch 解决
- 通过adb shell命令来获取data的权限,输入su的命令出错
- ajax解决跨域请求问题
- 基于maven构建spring-boot的子模块时,子模块的pom文件报错处理
- Intellij IDEA 使用Spring-boot-devTools无效解决办法
- 立体神经网络模拟连续不完备系统
- java反射泛型异常:argument type mismatch解决方案
- 关于selenium中定位不到元素,切换frame
- HOA 日志跟踪查看
- Lua语法学习(二)
- 获取rootviewcontroller Whose view is not in the window hierarchy 错误的解决办法
- imageview的scaletype
- Bootstrap Table获取并展示数据列表
- java设计模式之观察者模式
- 独立测试团队在敏捷开发中的几个特别实践