这个方法和 instanceof 有什么关系?

What does this method work with instanceof?

我想知道这个方法是如何工作的?尤其是这部分代码 "((Book) o).getId()"

public boolean equals(Object o){
    if (o instanceof Book){
        return id == ((Book) o).getId();
    }
    return false;
}

谢谢

instanceof 语法检查第一个对象是否实现或扩展了第二个对象。如果是,则 returns 为真。然后,因为它一本书,它得到对象的ID,这是一本书。

首先,if 语句验证变量 o 是否是 Book class.

的实例
if (o instanceof Book)

其次,如果 o 是一本书,那么我们可以将它转换成一本书。 下面的代码 return Book 对象:

Book myVar = (Book) o;

第三,我们可以调用 myVar 中的 Book 方法。例如:

myVar.getId()

您发布的代码在一行中完成了所有这些。 Cast,调用 Book 方法和 return 响应。

public boolean equals(Object o){
    if (o instanceof Book){ 
        return id == ((Book) o).getId(); 
    }
    return false; 
}

向方法传递一个对象,instanceof检查传递给方法的对象是否为Book类型。

如果对象是 Book 类型,那么它使您能够安全地将对象转换为 Book.

现在对象是 Book - 您可以使用 Book class 具有的方法。

如果 Book 对象 oid 具有相同的值 - 它将 return true 否则 false.

如果对象不是一本书,它将return false 作为默认值。