为什么没有java.lang.Array类?如果Java数组是一个Object

这是Java包树:http : //docs.oracle.com/javase/7/docs/api/java/lang/package-tree.html


我阅读了有关Java的教程,其中指出Java数组中的对象。


数组类在哪里?我们怎么能这样制作数组:


byte[] byteArr = new byte[];

char[] charArr = new char[];

int[] intArr = new int[];

数组将继承Object的方法;例如:


    byte thisByte = 1;

    byte thatByte = 2;

    byte[] theseBytes = new byte[] {thisByte, thatByte};

    int inheritance = theseBytes.length; //inherited 'length' field and some methods

    int wasntInWill = thatByte.length; //error

这里发生了什么?


编辑:


按照答案,我现在知道它是包中的final类java.lang.reflect。


现在java.lang.reflect,我在Android项目中创建了一个程序包,并向其中添加了一个名为Array.java的类。为了确认这是原始类的方式,Eclipse给了我错误“ ...在path / to / android.jar中已经存在”


如果我写了与该类相同的类,java.lang.reflect.Array但是更改了toString()方法...这应该在我的应用程序中正常工作吗?


回首忆惘然
浏览 1809回答 3
3回答

叮当猫咪

略述以上代码段:public class ClassForName {    public static void main(String[] argv) throws ClassNotFoundException {        Class theClass = Class.forName("[I");        System.out.println(theClass.getName());        Class superClass = theClass.getSuperclass();        System.out.println(superClass.getName());    }}结果:C:\JavaTools>java ClassForName[Ijava.lang.Object可以看出,“ [I]是我们将用英语称为“ int数组”的类的名称。该类是“完全公民身份” Java类,它响应Object的所有方法。唯一的区别是new语法不同,并且不支持newInstance()Class方法。(类“ [I”,“ [C”等,在JVM中是“预定义的”-没有与之相对应的.class文件。Java还将动态地隐式创建“ [[ MyJavaClass;”类(如果您的程序中包含“ MyJavaClass”数组)。略述以上代码段:public class ClassForName {    public static void main(String[] argv) throws ClassNotFoundException {        Class theClass = Class.forName("[I");        System.out.println(theClass.getName());        Class superClass = theClass.getSuperclass();        System.out.println(superClass.getName());    }}结果:C:\JavaTools>java ClassForName[Ijava.lang.Object可以看出,“ [I]是我们将用英语称为“ int数组”的类的名称。该类是“完全公民身份” Java类,它响应Object的所有方法。唯一的区别是new语法不同,并且不支持newInstance()Class方法。(类“ [I”,“ [C”等,在JVM中是“预定义的”-没有与之相对应的.class文件。Java还将动态地隐式创建“ [[ MyJavaClass;”类(如果您的程序中包含“ MyJavaClass”数组)。
打开App,查看更多内容
随时随地看视频慕课网APP