【问题标题】:Java 8 Streams int and IntegerJava 8 流 int 和 Integer
【发布时间】:2014-02-22 04:15:54
【问题描述】:

刚刚接触到 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?对此的任何见解都会非常有帮助...

【问题讨论】:

    标签: java integer int java-8 java-stream


    【解决方案1】:

    泛型不适用于原始类型。 Stream.of 方法声明为

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

    当你使用

    Stream.of(ints)
    

    其中intsint[],Java 看不到许多int 元素(原始类型),它看到单个int[] 元素(这是一个引用类型)。所以单个int[] 被绑定为T... values 表示的数组中唯一的元素。

    所以values 变成了int[][],它的每个元素都是int[],打印出来的样子

    [I@5acf9800
    

    【讨论】:

    • 整数可以使用IntStream.of
    猜你喜欢
    • 2017-01-28
    • 2020-06-14
    • 1970-01-01
    • 2021-07-16
    • 2020-11-30
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    相关资源
    最近更新 更多