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