只是让我的手弄脏了Java 8并偶然发现了如下行为 -
public static void main(String... args){
System.out.println("[Start]");
int[] ints = {1, 2, 3, 4};
Stream.of(ints).forEach(i->System.out.println("Int : "+i));
Integer[] integerNums = {1, 2, 3, 4};
Stream.of(integerNums).forEach(i->System.out.println("Integer : "+i));
System.out.println("[End]");
}
输出是:
[Start]
Int : [I@5acf9800
Integer : 1
Integer : 2
Integer : 3
Integer : 4
[End]
虽然我期望代码在两种情况下都打印所有int和Integer?任何有关这方面的见解都会非常有用......
答案 0 :(得分:12)
泛型不适合原始类型。 Stream.of
方法声明为
static <T> Stream<T> of(T... values)
使用时
Stream.of(ints)
其中ints
是int[]
,Java没有看到多个int
元素(基本类型),它看到一个int[]
元素(其中是一种参考类型)。因此单个int[]
被绑定为T... values
表示的数组中的唯一元素。
因此values
成为int[][]
,其每个元素都是int[]
,其打印方式如
[I@5acf9800