说明书上说:创建一个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;
}
但是我做错了,我不知道我的问题是什么。我对物体是新手,所以这有点让我困惑。
3条答案
按热度按时间hkmswyz61#
由于这是一个家庭作业问题,我不会给予详细的答案。你必须实现一个
equals()
方法,而不是一个instanceOf()
方法。我认为这个链接有助于:其中的代码示例应该足够了。如果需要更多的提示,请再次询问。
e0bqpujr2#
他明确地说创建一个
equals()
方法,你也在这里得到了,但是即使这样你还是创建了一个名为instanceOf()
的方法,为什么?此外,如果传递了其他类型的对象,您可能会在此行中得到一个ClassCastException。
确切地说,这意味着,在确保传递的
object
是Position
类型之后,您只应该将object
强制转换为Position
。这意味着现在最好进行进一步的比较。如果它首先不是Position
类型,那么您为什么还要麻烦进行进一步的比较呢?因为它永远不可能相等。我希望您理解我的观点。[编辑以回答评论中的问题]
实际的示例应该是Position类型,一旦我们知道它是Position类型,使用instanceof操作符,我们就知道把它从Object类型转换成Position类型是安全的,现在的问题是为什么我们需要转换,因为最初的示例是Object类型,我们不确定实际的类型,你可能已经知道在Java中你可以把任何类型赋给Object类型,因为Object是Java中每个类的父类,所以在应用instanceof之前我们并不确定instance的类型。
如果你不强制转换它,你将永远无法访问它的属性,即x,y,和id,你可以尝试在不强制转换的情况下访问实际对象上的任何属性,你会知道你不能,因此,你也不能比较这些属性,我希望,这已经很清楚了。
lrpiutwd3#
尽管
Object a
是Position
类型,但它被定义为Object
类型,为了访问Position a
的属性,我们必须使用以下命令将Object a
强制转换为Position p