【发布时间】:2021-06-06 01:12:34
【问题描述】:
我知道 Object 类是 Java 中所有类的根类, 我想知道 int[] 和 Object 类之间的关系。
Arrays.stream() 可以接受 int[]、long[]、double[] 和 Object[] 的 arg。
当我遇到将 int[] 赋予泛型类型 (Stream<int[]>) 的代码时,此代码有效,我们只为 Stream 提供类。
此代码的输出也是十六进制代码而不是整数
int arr[] = { 1, 2, 3, 4, 5 };
// --------- Using Arrays.stream() ---------
// to convert int array into Stream
IntStream intStream = Arrays.stream(arr);
// Displaying elements in Stream
intStream.forEach(str -> System.out.print(str + " ")); // {1,2,3,4,5]
// --------- Using Stream.of() ---------
// to convert int array into Stream
Stream<int[]> stream = Stream.of(arr);
// Displaying elements in Stream
stream.forEach(str -> System.out.print(str + " ")); // I@asdf
【问题讨论】:
-
你有什么问题?您要修复的错误是什么?预期的输出是多少?
-
标题的答案可以在JLS 10. Arrays 中找到。第一句话:“在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以赋值给Object类型的变量(§4.3.2)。Object类的所有方法都可以是在数组上调用。”
-
@user15244370 非常感谢,正在寻找这个
-
只是为了乐趣
System.out.println(arr.getClass())orObject obj = arr; int[] casted = (int[]) obj; -
syso(arr.getClass()) // "[I" 有意义 toString() 是 Classname@hexcode
标签: java generics java-stream