JAVA 调用泛型参数的静态方法
2022/2/6 1:42:25
本文主要是介绍JAVA 调用泛型参数的静态方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天碰到了这么一个问题,我用HttpClient访问第三方接口的时候出现了第三方接口返回值不统一的情况。
举例说明:
当访问A接口的时候,返回值用 JSONObject.parseObject("返回的String") 解析没问题。
但是当B接口的时候,返回值用 JSONObject.parseObject("返回的String") 就报错了,用 JSONArray.parseArray("返回的String") 解析没问题。(用JSONObject.parseArray("返回的String")也不行哦~)
众所周知,HttpClient我们通常会把他封装成一个工具类,工具类应保持开闭原则(虽然这里只是一个简单的工具类,没有使用设计模式,嘿嘿嘿),所以这就否定了在工具类中单独加一个方法来适应返回值为JSONArray.parseArray的业务。
解决思路:因为 JSONObject 与 JSONArray 本是一家子,都是 com.alibaba.fastjson 包下的,并且共同是 JSON的子类,所以可以使用泛型解决这个问题。
最终解决方案代码:
@Test public void test2() throws Exception{ JSONArray jsonArray = test(JSONArray.class); System.out.println(jsonArray); }
/** * * @param T 你要选择的解析结果的类 * @return * @throws Exception */ private <T extends JSON> T test(Class<T> T) throws Exception{
String params = "你HttpClient返回回来的String结果"; String name = T.getName(); Class<?> threadClazz = Class.forName(name); Method method = threadClazz.getMethod("parseArray", String.class); Object resultObj = method.invoke(null,params); return (T)resultObj; }
这篇关于JAVA 调用泛型参数的静态方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署