Что не так с конфигурацией Commons AbstractConfiguration get () и getArray ()? - PullRequest
0 голосов
/ 22 ноября 2018

Использование commons-configuration2:2.4.

my.properties:

arrayOfSingle=0xA
arrayOfMultiples=0xD,0xA

CONFIG.getArray(int[].class, "arrayOfSingle"));

  org.apache.commons.configuration2.ex.ConversionException:
    The value '0xA' (class java.lang.String) can't be converted to a [I object

CONFIG.getArray(int[].class, "arrayOfMultiples"));

  org.apache.commons.configuration2.ex.ConversionException:
    The value '0xD,0xA' (class java.lang.String) can't be converted to a [I object

CONFIG.getArray(Integer[].class, "arrayOfSingle"));

  org.apache.commons.configuration2.ex.ConversionException: 
    The value '0xA' (class java.lang.String) can't be converted to a [Ljava.lang.Integer; object

CONFIG.getArray(Integer[].class, "arrayOfMultiples"));

  org.apache.commons.configuration2.ex.ConversionException:
    The value '0xD,0xA' (class java.lang.String) can't be converted to a [Ljava.lang.Integer; object

CONFIG.get(int[].class, "arrayOfSingle") // prints "[I@7dba7035", i.e.works

CONFIG.get(int[].class, "arrayOfMultiples")

  org.apache.commons.configuration2.ex.ConversionException:
    Could not convert 0xD,0xA to java.lang.Integer! Invalid hex number.

CONFIG.get(Integer[].class, "arrayOfSingle") // prints "[Ljava.lang.Integer;@44d379bb", i.e. works

CONFIG.get(Integer[].class, "arrayOfMultiples")

  org.apache.commons.configuration2.ex.ConversionException:
    Could not convert 0xD,0xA to java.lang.Integer! Invalid hex number.

getArray(Class<?> cls, String key, Object defaultValue) устарела (рекомендуется использовать get(Class<T> cls, String key, T defaultValue)), но getArray(Class<?> cls, String key) нет и get(Class<T> cls, String key) тоже не работает.

1 Ответ

0 голосов
/ 22 ноября 2018

Отмена getArray() и использование варианта из нескольких строк, как описано в Списки и массивы работает.

my.properties:

arrayOfMultiples=0xD
arrayOfMultiples=0xA

CONFIG.get(int[].class, "arrayOfMultiples")
CONFIG.get(Integer[].class, "arrayOfMultiples")
...