zoukankan      html  css  js  c++  java
  • 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;
    }

     

     

  • 相关阅读:
    使用iOS网络请求
    Invalid RNPermission 'ios.permission.xxx'. should be one of: ( )
    React Native 报错 Error: spawn EACCES 权限
    React Native 适配Android物理返回键,实现连续两次点击退出
    图解:平衡二叉树,AVL树
    NOIP 骗分技巧
    P1004 方格取数
    5. 最长回文子串
    全链路压测自动化实践
    深度学习在美团配送ETA预估中的探索与实践
  • 原文地址:https://www.cnblogs.com/llja/p/10637206.html
Copyright © 2011-2022 走看看