title: In a Java method that takes an Object argument, how can you access fields that only exist for instances of specific classes?
body: <p>-- Yes, this is a question asking for help regarding something that was assigned as homework. No, this is not me asking you to do my homework for me. The deadline was a half an hour ago; I literally can't change my submission. You'll just have to take my word for it. Moving on...</p>
  
  <p>I know that testing for the type of objects is supposed to be unnecessary. When I was looking for details about 'instanceof', I found a half dozen threads where people responded only to tell the original poster that they were making a mistake if they had to test to find out what kind of object they were dealing with before processing it. Yes, I know, I would love to follow the conventions. Unfortunately, my professor asked for us to override the equals method of a class we defined, and specifically required an Object type parameter. If you see my code, you'll probably understand better: </p>
  
  <pre><code>public boolean equals(Course other){
      if(!(other instanceof Course)){
          return false;
      } else if(other.name==this.name &amp;&amp; other.days==this.days &amp;&amp; 
          other.start==this.start &amp;&amp; other.end==this.end){
          return true;
      }
      return false;
  }
  </code></pre>
  
  <p>You can probably understand where I'm going with this. The 'other' parameter should be an Object type, but the program has a fit if I leave it as an Object and use the name / days / start / end fields. If I change it to Course, of course it works (no pun intended), but that would be a completely different method. The desired behavior is for all objects other than Course instances to make the method return false, and additionally, for mismatched data between Course instances to make it return false.</p>
  
  <p>I'm sorry to all of you who know Java well enough to be frustrated by seeing questions like these.</p>