java 获取方法返回值list中的类型

周末写了个小功能,有部分指定请求不走mybatis, 而是走其它http数据服务接口,需要判断dao接口方法中的返回值,来进行赋值.

public interface LanguageDao {

    /**
     * 查询当前配置的语言
     * @return
     */
    List queryLanguageList();
}

代码如下:

public static final ObjectMapper mapper = new ObjectMapper();

public List ArrayListConverter(Method method, String result, Class returnTypeBean) throws Exception{
        Type type = method.getGenericReturnType();
        //以下方法就是获取list类的泛形类数组的方法
        Class entityClass = (Class)((ParameterizedType) type).getActualTypeArguments()[0];
        //如果list集合中不属于自定义类,则单独处理
        if(entityClass.getClassLoader() == null){
            return JSONArray.fromObject(result);
        }
        return mapper.readValue(result, getCollectionType(ArrayList.class, entityClass));
    }

private JavaType getCollectionType(Class collectionClass, Class... elementClasses) {
        return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
    }

你可能感兴趣的:(JAVA)