如何阅读 Java 的 API 文档?
How do I read Java's API documentation?
我对文档中使用的 class 名称有些困惑。
如果我想使用 Array
class 中的方法 getLength(Object name)
,编译器接受 java.lang.reflect.Array.getLength(nameOfArray)
但不接受 java.lang.Object.getLength(nameOfArray)
。尽管下面链接的 API 文档图片在我看来似乎暗示两个 classes 都链接到数组 classes 方法。
If I want to use the method getLength(Object name) from the Array class the compiler accepts java.lang.reflect.Array.getLength(nameOfArray)
正确,因为方法就在那里。
but not java.lang.Object.getLength(nameOfArray)
.
不正确,因为java.lang.Object
class.
中没有这个方法
Though the API documentation linked below seems to imply to me that both class paths are linked to the Array
classes method.
不,不是。你图片中部分的意思是第二个 class 扩展了第一个 class.
该文档示例显示 Array
是 Object
的子项,但您不能互换使用它们。
您看到它们关联的原因是 Object
是 Array
的 Superclass。
在Java中,Object
是all的superclass classes.
The Object class, in the java.lang package, sits at the top of the
class hierarchy tree. Every class is a descendant, direct or indirect,
of the Object class.
这里还有更多内容:https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html
每个这样的 child class(在本例中为数组 class)从 superclass(Object class在这种情况下)。
如果 child class 希望更改它从 superclass 继承的任何这些变量或方法,那么它将 覆盖 那些。此外,childclass本身可能有自己的变量和方法,与superclass无关。在您显示的示例中就是这种情况,即 Array 是一个 data-structure 有长度,但它的 parent Object 没有长度。
注意:请阅读Java中的继承。
此外,还阅读了 access specifiers(因为私有成员不被继承),keywords(例如 final
变量不能更改值,final
方法不能被覆盖,final
classes 不能被子classed)。祝你好运!
Array
扩展 Object
。这意味着任何可用于对象的方法都可用于数组,但反之则不然。
考虑这个例子。将 Array
替换为 Student
,将 Object
替换为 Human
。 Student extends Human
。假设 Human
有 getDateOfBirth
方法。 Student
也有 getGrades
方法。 Student
可以叫getDateOfBirth
和getGrades
,而Human
只能叫getDateOfBirth
,因为没有给宝宝定级。
请注意 Object
是所有其他 类 的超类。因此它的方法数量最少。
我对文档中使用的 class 名称有些困惑。
如果我想使用 Array
class 中的方法 getLength(Object name)
,编译器接受 java.lang.reflect.Array.getLength(nameOfArray)
但不接受 java.lang.Object.getLength(nameOfArray)
。尽管下面链接的 API 文档图片在我看来似乎暗示两个 classes 都链接到数组 classes 方法。
If I want to use the method getLength(Object name) from the Array class the compiler accepts
java.lang.reflect.Array.getLength(nameOfArray)
正确,因为方法就在那里。
but not
java.lang.Object.getLength(nameOfArray)
.
不正确,因为java.lang.Object
class.
Though the API documentation linked below seems to imply to me that both class paths are linked to the
Array
classes method.
不,不是。你图片中部分的意思是第二个 class 扩展了第一个 class.
该文档示例显示 Array
是 Object
的子项,但您不能互换使用它们。
您看到它们关联的原因是 Object
是 Array
的 Superclass。
在Java中,Object
是all的superclass classes.
The Object class, in the java.lang package, sits at the top of the class hierarchy tree. Every class is a descendant, direct or indirect, of the Object class.
这里还有更多内容:https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html
每个这样的 child class(在本例中为数组 class)从 superclass(Object class在这种情况下)。
如果 child class 希望更改它从 superclass 继承的任何这些变量或方法,那么它将 覆盖 那些。此外,childclass本身可能有自己的变量和方法,与superclass无关。在您显示的示例中就是这种情况,即 Array 是一个 data-structure 有长度,但它的 parent Object 没有长度。
注意:请阅读Java中的继承。
此外,还阅读了 access specifiers(因为私有成员不被继承),keywords(例如 final
变量不能更改值,final
方法不能被覆盖,final
classes 不能被子classed)。祝你好运!
Array
扩展 Object
。这意味着任何可用于对象的方法都可用于数组,但反之则不然。
考虑这个例子。将 Array
替换为 Student
,将 Object
替换为 Human
。 Student extends Human
。假设 Human
有 getDateOfBirth
方法。 Student
也有 getGrades
方法。 Student
可以叫getDateOfBirth
和getGrades
,而Human
只能叫getDateOfBirth
,因为没有给宝宝定级。
请注意 Object
是所有其他 类 的超类。因此它的方法数量最少。