簡體   English   中英

傑克遜中的泛型用於數組反序列化

[英]Generics in jackson for array deserialisation

我想使用泛型或我無法提供的其他方法來重構以下方法。

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM