2014-02-22 34 views
5

当时正好让我的手脏与Java 8无意中发现了如下行为 -的Java 8流int和整数

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 : [[email protected] 
Integer : 1 
Integer : 2 
Integer : 3 
Integer : 4 
[End] 

而我期待在两种情况下打印所有int和Integer的代码?对此的任何见解都将非常有帮助......

回答

11

泛型不适用于基本类型。该Stream.of方法声明为

static <T> Stream<T> of(T... values) 

当使用

Stream.of(ints) 

ints哪里是int[],Java不看到一些int元件(原始类型)的,它看到单个int[]元件(这是一个参考类型)。因此单个int[]被绑定为由T... values表示的数组中唯一的元素。

所以values成为int[][]和它的每个元素是一个int[],其打印像

[[email protected] 
+5

你可以用'IntStream.of'为整数。 – nosid