Java 对象类引用如何接收基元类型数组基址?

Java 对象类引用如何接收基元类型数组基址?,java,arrays,object,core,Java,Arrays,Object,Core,请参阅输出 问题是Demo类中的方法“receive(Object temp)”如何接收 基元整型数组 如果对象类引用变量可以接收基元类型数组基址,那么有一件事 很明显,基址必须是对象类类型或对象类类型的子类 那么,是否也存在用于基元类型数组地址的类 在Java中,数组也是对象,int是原语,而不是int数组。因此,您可以在需要对象的位置传递数组 接下来,在MyClass@5db9742后面的数字表示对象的哈希代码 在Java中,数组也是对象,int是原语,而不是int数组。因此,您可以在需要对

请参阅输出

问题是Demo类中的方法“receive(Object temp)”如何接收 基元整型数组

如果对象类引用变量可以接收基元类型数组基址,那么有一件事 很明显,基址必须是对象类类型或对象类类型的子类

那么,是否也存在用于基元类型数组地址的类


在Java中,
数组
也是
对象
int
是原语,而不是int数组。因此,您可以在需要对象的位置传递数组


接下来,在
MyClass@5db9742
后面的数字表示对象的哈希代码

在Java中,
数组
也是
对象
int
是原语,而不是int数组。因此,您可以在需要对象的位置传递数组


接下来,在
MyClass@5db9742
后面的数字表示对象的哈希代码

在Java中,
数组
也是
对象
int
是原语,而不是int数组。因此,您可以在需要对象的位置传递数组


接下来,在
MyClass@5db9742
后面的数字表示对象的哈希代码

在Java中,
数组
也是
对象
int
是原语,而不是int数组。因此,您可以在需要对象的位置传递数组

接下来,在
MyClass@5db9742
后面的数字表示对象的哈希代码

问题在于Demo类中的方法“receive(Object temp)”如何接收基元整型数组的基址

Java不允许纯Java应用程序查看或操作地址

所以答案是它不能


如果您真的需要获取一个对象(包括一个数组)的地址,那么就有可能从纯Java跳出到JVM实现中;e、 g.使用JNI或JNA调用本机代码,或使用
Unsafe
类。但是如果你这样做,你需要非常小心。一个错误就可以使JVM硬崩溃

而且,你不需要在普通的程序中这样做


如果对象类引用变量可以接收基元类型数组基址,那么有一点很清楚,基址必须是对象类类型或对象类类型的子类

如果您试图说(例如)
int[]
对象的子类型,那么这是正确的。但你不需要求助于涉及“基址”的扭曲逻辑来推断。它实际上是在Java语言规范中指定的

例如:

类对象是所有其他类的超类(§8.1.4)

所有类和数组类型继承(§8.4.8)类对象的方法

JLS中还有更多关于对象、类、类型和数组之间关系的内容

问题在于Demo类中的方法“receive(Object temp)”如何接收基元整型数组的基址

Java不允许纯Java应用程序查看或操作地址

所以答案是它不能


如果您真的需要获取一个对象(包括一个数组)的地址,那么就有可能从纯Java跳出到JVM实现中;e、 g.使用JNI或JNA调用本机代码,或使用
Unsafe
类。但是如果你这样做,你需要非常小心。一个错误就可以使JVM硬崩溃

而且,你不需要在普通的程序中这样做


如果对象类引用变量可以接收基元类型数组基址,那么有一点很清楚,基址必须是对象类类型或对象类类型的子类

如果您试图说(例如)
int[]
对象的子类型,那么这是正确的。但你不需要求助于涉及“基址”的扭曲逻辑来推断。它实际上是在Java语言规范中指定的

例如:

类对象是所有其他类的超类(§8.1.4)

所有类和数组类型继承(§8.4.8)类对象的方法

JLS中还有更多关于对象、类、类型和数组之间关系的内容

问题在于Demo类中的方法“receive(Object temp)”如何接收基元整型数组的基址

Java不允许纯Java应用程序查看或操作地址

所以答案是它不能


如果您真的需要获取一个对象(包括一个数组)的地址,那么就有可能从纯Java跳出到JVM实现中;e、 g.使用JNI或JNA调用本机代码,或使用
Unsafe
类。但是如果你这样做,你需要非常小心。一个错误就可以使JVM硬崩溃

而且,你不需要在普通的程序中这样做


如果对象类引用变量可以接收基元类型数组基址,那么有一点很清楚,基址必须是对象类类型或对象类类型的子类

如果您试图说(例如)
int[]
对象的子类型,那么这是正确的。但你不需要求助于涉及“基址”的扭曲逻辑来推断。它实际上是在Java语言规范中指定的

例如:

类对象是所有其他类的超类(§8.1.4)

所有类和数组类型继承(§8.4.8)类对象的方法class Demo{ static void receive(Object temp){ System.out.println(temp); } } class Test{ public static void main(String ... a){ int arr[] = new int[5]; Demo.receive(arr); } }
    temp.getClass().isPrimitive();
    temp.getClass().isArray();
    temp.getClass().isInterface();
    temp.getClass().isAssignableFrom(Object.class);