g0c*_*33k 5 java int integer java-8 java-stream
刚刚用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]");
}
Run Code Online (Sandbox Code Playgroud)
输出是:
[Start]
Int : [I@5acf9800
Integer : 1
Integer : 2
Integer : 3
Integer : 4
[End]
Run Code Online (Sandbox Code Playgroud)
虽然我期望代码在两种情况下都打印所有int和Integer?任何有关这方面的见解都会非常有帮助......
Sot*_*lis 12
泛型不适用于原始类型.该Stream.of方法声明为
static <T> Stream<T> of(T... values)
Run Code Online (Sandbox Code Playgroud)
当你使用
Stream.of(ints)
Run Code Online (Sandbox Code Playgroud)
其中ints是int[],Java没有看到一些int元素(原始类型),它看到的单个int[]元件(这是一个引用类型).所以单个int[]被绑定为数组所代表的唯一元素T... values.
因此values成为一个int[][]和它的每个元素是一个int[],打印像
[I@5acf9800
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |