java - 在java中比较两个对象之间的相等性时遇到问题

标签 java

<分区>

让这个项目正常工作我遇到了很多问题,但我目前坚持让这个类正常工作。它应该做的是从 radio 类中获取当前电台并将其传递给此类。问题是我正在尝试在 AM 和 FM 之间进行选择并显示当前电台。我不确定我是否正确使用了 equals 方法,因为它一直返回 0.0,这是 currentStation 的默认值。

public class AutoRadioSystem
{

  private Radio selectedRadio;
  private AMRadio radioAM;
  private FMRadio radioFM; 
  private XMRadio radioXM;

  public AutoRadioSystem()
  {
    selectedRadio = new AMRadio();
  }
  public double getCurrentStation()
  {
    if (selectedRadio.equals(radioAM))
    {
      return radioAM.getCurrentStaion();
    }
    else if (selectedRadio.equals(radioFM))
    {
      return radioFM.getCurrentStaion();
    }
    return 0.0;
  }
  public void selectRadio()
  {
    //if (selectedRadio.equals(radioAM))
     // selectedRadio = radioFM;
  }
  public boolean equals (Object o)    
 {        
   if (o == null)           
     return false;        
   if (! (o instanceof AutoRadioSystem))           
     return false;       
   AutoRadioSystem other = (AutoRadioSystem) o;       
   return this.selectedRadio == other.selectedRadio;    
 }
  public static void main (String [] args) { 
    AutoRadioSystem c = new AutoRadioSystem();
    //c.selectRadio();
    double b = c.getCurrentStation();
    System.out.println(b);
  }
}

最佳答案

看起来你做错了 (tm)。 Radio 接口(interface)应该公开 getCurrentStaion() 方法,该方法将由所有 3 个 radio 类实现。然后您的 getCurrentStation() 方法可以调用 selectedRadio.getCurrentStation() 并返回其结果。

您还在 AutoRadioSystem 中实现了 equals() 方法,这在比较 Radio 实例时不会产生任何影响。

关于java - 在java中比较两个对象之间的相等性时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18993006/

相关文章:

Java泛型——类型推导

Java 8 流 : Map the same object multiple times based on different properties

java - Mongodb Java驱动程序将无法通过TLS连接

java - For循环不执行文件写入命令

java - redis.clients.jedis.exceptions.JedisConnectionException : java.net.UnknownHostException

java - 如何在 IntelliJ 中调用方法/构造函数参数提示?

java - 如何在 java 中将 xml 分块为多个部分?

java - 单击后退按钮时滑动加载的图像会重置

java - 将进度条链接到 Install4j 中的批处理文件执行

java - 如何使用 JMockit 模拟类中的最终实例变量