我们知道数组是 Java 中的对象。我相信要创建一个object
in Object oriented languages
(如果没有,我们可以在单独的讨论中拥有它),我们需要它的蓝图(一个类)。但是我不确定或找不到在new operator
使用时为数组创建对象的类。如果java中有一个数组类,那么层次结构会是什么样子?
如果没有类,那么对象是如何实例化的?没有类的对象类型背后的原因是什么?
一个数组,比如说 an Object[]
,是一种特殊的变量,就像原语一样。它的类型是Object[]
,不是Object
。Java 不是像 Ruby 那样的“完全”面向对象的语言;它有一些特殊的数据类型,如数组和原语。
逻辑与你相反。
但是由于 Java 是 OOP 语言,所以一切都必须表示为对象。当您反映您的代码时,您可以使用代表 Array 的类 java.lang.reflect.Array。
数组在java中不是原始的。数组是一个容器对象,它包含固定数量的单一类型的值。
System.out.print(int[].class.toString());
它成功打印并证明它具有具体class
的背景,并且同样适用于所有其他数组类型。
是的,Java 有数组类,请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.8数组类对象,例如
Class<int[]> cls = int[].class;
这些类是由 JVM 动态创建的。
原始类型数组之间没有层次结构
int[] a = new long[1];
产生编译时错误。Object 数组类型的层次结构与 Object 类型相同
Object[] a = new String[1];