代码之家  ›  专栏  ›  技术社区  ›  Gerold Broser

commons配置abstractconfiguration的get()和getarray()有什么问题?

  •  0
  • Gerold Broser  · 技术社区  · 6 年前

    使用 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 回复  |  直到 6 年前
        1
  •  0
  •   Gerold Broser    6 年前

    遗弃 getArray() 使用中描述的多行变量 Lists and arrays 作品。

    my.properties :

    arrayOfMultiples=0xD
    arrayOfMultiples=0xA
    

    _

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