我试图通过 StringUtils.join(array, separator)
方法。有没有人能解释一下,如果我使用一个基元类型数组(如 int[]
? 请参见下面的示例代码:
public static void main(String[] args){
String[] s = new String[]{"Anna","has", "apples"};
System.out.println(StringUtilities.join(s, " "));
int[] a = new int[]{1,2,3};
System.out.println(StringUtilities.join(a, " "));
Integer[] b = new Integer[]{1,2,3};
System.out.println(StringUtilities.join(b, " "));
}
仅使用 Integer
阵列工作。我知道基本体数组在内部的处理方式与arraylist或其他高阶对象不同,但是为什么可以示例化一个 HashMap<String, int[]>
没有任何警告,例外?数组是否在内部 Package 在另一个对象中?只为Map?从我从文档中读到的,你不能用原语类型参数化一个Map,集合,数组列表等,我明白,但是。。。我觉得有点困惑。任何合理的解释都将不胜感激。谢谢您。
2条答案
按热度按时间g6ll5ycj1#
看一下你的签名
int
数组StringUtils#join
:你打电话来了
join
使用使用字符串而不是字符。尝试使用
相反。
你的电话与另一个签名匹配:
所以你的参数被解释为两个对象,一个整数数组和一个带空格的字符串。在创建结果字符串时,该方法将整数数组的字符串表示形式与字符串连接起来。
bxfogqkk2#
int数组(原语)是一个对象。
我怀疑这个实现不支持基本数组和调用
toString()
结果是[I@659e0bfd
(转换为一维(只有一个[
)数组I
nts及其“内存位置”)。