ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA 调用泛型参数的静态方法

2022-02-06 01:02:17  阅读:199  来源: 互联网

标签:静态方法 String JSONArray JSONObject parseArray 返回值 泛型 JAVA HttpClient


今天碰到了这么一个问题,我用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;
}

标签:静态方法,String,JSONArray,JSONObject,parseArray,返回值,泛型,JAVA,HttpClient
来源: https://www.cnblogs.com/ExMan/p/15865140.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有