如何阅读 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 方法。

Java API documentation example

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.

该文档示例显示 ArrayObject 的子项,但您不能互换使用它们。

您看到它们关联的原因是 ObjectArraySuperclass

在Java中,Objectall的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 替换为 HumanStudent extends Human。假设 HumangetDateOfBirth 方法。 Student 也有 getGrades 方法。 Student可以叫getDateOfBirthgetGrades,而Human只能叫getDateOfBirth,因为没有给宝宝定级。

请注意 Object 是所有其他 类 的超类。因此它的方法数量最少。