java - 为什么我需要施法?

标签 java casting

在下面的代码片段中,我不是很清楚

的用处
Product other = (Product)obj;

在我看来,这是多余的。我们可以只删除这个,然后将“return this.id==other.id”更改为“return this.id == obj.id”吗?

public class Product{
  String description;
  double price;
  int id;

  public Product(String d, double p, int i){
    description = d;
    price = p;
    id = i;
  }

  public boolean equals(Object obj){
    if(!(obj instanceof Product){
      return false;
    }
    Product other = (Product)obj;
    return this.id == other.id;
  }

  public int hashcode(){
    return id;
  }

  public String toString(){
    return id + " "+description;
  } 
}

最佳答案

这里的想法是您需要告诉语言将other 视为Product。在您这样做之前,它只会将其视为一个 Object,它没有 id 属性。

关于java - 为什么我需要施法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6782727/

相关文章:

java - FirebaseUser - 如何为 FirebaseUser.updatePhoneNumber(PhoneAuthCredential) 使用 PhoneAuthCredential 参数

java - GWT MVP : HandlerManager EventHandler vs GUI EventHandler

c++ - C类类型转换和功能类型转换有什么区别?

C++:强制编译器使用两个竞争运算符之一

ios - 发送嵌套消息时正确转换

c - C 语言中的强制转换会失败吗?

java - 使用 Java 进行 SSH 私钥验证

java - 如何将对象添加到我无法编辑的类中

java - Java 中使用局部变量隐藏实例变量

java - 如何*轻松*地克隆容器(例如 ArrayList)?使用.clone() 是错误的吗?