java - Jackson 中用于数组反序列化的泛型

标签 java generics jackson

我想使用泛型或我无法想出的不同方法来重构以下方法。

public Double[] reverseDoubles() throws IOException {
    String sarray = get.array();
    Double[] array = mapper.readValue(sarray, Double[].class);
    return ArrayUtils.reverse(array);
}

public Long[] reverseLongs() throws IOException {
    String sarray = get.array();
    Long[] array = mapper.readValue(sarray, Long[].class);
    return ArrayUtils.reverse(array);
}

我希望将所有方法重构为具有以下签名的方法:

public <T> T[] reverse() throws IOException {
  ...
}

最佳答案

如果不接受 reverse 中元素的类型,则无法执行此操作。但是,如果您可以接受传递类型,那么您可以使用 Array.newInstance 在运行时创建所需的数组类:

public <T> T[] reverse(Class<T> elementType) throws IOException {
    String sarray = get.array();
    Class<?> arrayType = Array.newInstance(elementType, 0).getClass();
    T[] array = (T[]) mapper.readValue(sarray, arrayType);
    return ArrayUtils.reverse(array);
}

关于java - Jackson 中用于数组反序列化的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39506498/

相关文章:

java - 如何从 SwingWorker doInBackground 内部调用 JFileChooser 并等待答案?

java - Eclipse 无法使用选项 : takes control of Tomcat installation 启动 Tomcat

c# - 为什么 C# 泛型不能像在 C++ 模板中那样从泛型类型参数之一派生?

java - 带有 Kotlin 的 Dagger 2,在 ApplicationComponent 中返回具有泛型的类型

java - Dropwizard 资源错误响应

java - Hibernate 支持的 Postgresql UUID?

javax.tools编译器生成jar

Java 类型转换问题

java - Jackson 树结构的序列化/反序列化

android - com.fasterxml.jackson.databind.exc.MismatchedInputException : Unexpected token (START_OBJECT), 预期 START_ARRAY: