Java对象示例

zujrkrfu  于 2023-01-07  发布在  Java
关注(0)|答案(3)|浏览(190)

说明书上说:创建一个equals方法,该方法接受一个对象引用,如果给定对象等于该对象,则返回true。您将需要"instanceof"并强制转换为(Position)
我有:

class Position {

    private double x,y;
    private int id;

public boolean instanceOf(Object a)
    {
        boolean isInstance;
        if ((Position)a instanceof Position)
            isInstance=true;
        else
            isInstance=false;
        return isInstance;
    }

但是我做错了,我不知道我的问题是什么。我对物体是新手,所以这有点让我困惑。

hkmswyz6

hkmswyz61#

由于这是一个家庭作业问题,我不会给予详细的答案。你必须实现一个equals()方法,而不是一个instanceOf()方法。我认为这个链接有助于:

其中的代码示例应该足够了。如果需要更多的提示,请再次询问。

e0bqpujr

e0bqpujr2#

他明确地说创建一个equals()方法,你也在这里得到了,但是即使这样你还是创建了一个名为instanceOf()的方法,为什么?
此外,如果传递了其他类型的对象,您可能会在此行中得到一个ClassCastException

if ((Position)a instanceof Position)

确切地说,这意味着,在确保传递的objectPosition类型之后,您只应该将object强制转换为Position。这意味着现在最好进行进一步的比较。如果它首先不是Position类型,那么您为什么还要麻烦进行进一步的比较呢?因为它永远不可能相等。我希望您理解我的观点。

[编辑以回答评论中的问题]

实际的示例应该是Position类型,一旦我们知道它是Position类型,使用instanceof操作符,我们就知道把它从Object类型转换成Position类型是安全的,现在的问题是为什么我们需要转换,因为最初的示例是Object类型,我们不确定实际的类型,你可能已经知道在Java中你可以把任何类型赋给Object类型,因为Object是Java中每个类的父类,所以在应用instanceof之前我们并不确定instance的类型。
如果你不强制转换它,你将永远无法访问它的属性,即x,y,和id,你可以尝试在不强制转换的情况下访问实际对象上的任何属性,你会知道你不能,因此,你也不能比较这些属性,我希望,这已经很清楚了。

lrpiutwd

lrpiutwd3#

尽管Object aPosition类型,但它被定义为Object类型,为了访问Position a的属性,我们必须使用以下命令将Object a强制转换为Position p

Position p = (Position)a;

相关问题