我对Vehicle other = (Vehicle)obj;
的所作所为感到困惑。它是否会创建变量other
并将obj
复制到其中?
@Override
public boolean equals (Object obj) {
if (this == obj) return true;
if (!(obj instanceof Vehicle)) return false;
Vehicle other = (Vehicle)obj;
return ( type.equals(other.type)
&& size == other.size
&& uitstoot == other.uitstoot
);
}
答案 0 :(得分:2)
首先,检查obj
是Vehicle
if (!(obj instanceof Vehicle)) return false;
如果是,那么它被转换为Vehicle
类 - 即从那时起,它将被解释为Vehicle
实例
Vehicle other = (Vehicle)obj;
答案 1 :(得分:0)
它做了两件事。它将other
声明为Vehicle
引用,并将其初始化为指向obj
引用的对象的指针。强制转换永远不会导致运行时异常,因为该对象已被确定为Vehicle
。
答案 2 :(得分:0)
我认为你是对的。
首先它将Object obj转换为Vehicle类(我们已经检查过obj可以转换为Vehicle类,否则代码无法转到此处)
其次将副本提供给另一个变量以保护原始数据。