如何解决:compareTo>>找不到标志

时间:2015-10-25 23:29:48

标签: java object interface compare compareto

这是一项家庭作业。但是,我编写了我的任务的绝大部分。只有这一个障碍。我也是Java的新手,所以我的术语可能有些偏差。

所以我有5种类型: 由老师提供:

  • NameInterface,它是Name
  • 的接口文件
  • 名称,使用2个私人字符串,first&最后,名字和姓氏
  • StudentInterface,这是学生的接口文件
  • StudentTest,这是用于测试的主要方法

主要由老师提供,我只需修复compareTo()。其他一切如构造函数,字段等都已完成:

  • 学生,使用fullName(名称接口)& String city

Name类有一个compareTo()覆盖,它使用Java的内置compareTo来比较第一个&其他第一个

dispatch_apply

Student class有一个compareTo(),它使用Name class compareTo来比较这个Name&其他名称以及这个城市&其他城市

  public int compareTo(Object other)
  {
  int result = last.compareTo(((Name)other).last);

  if (result == 0)
  {   
      // last names are equal; check first
     result = first.compareTo(((Name)other).first);
  }  // end if 

  return result; 
} // end compareTo

我尝试在StudentTest中调用Student class的compareTo,但它说找不到符号。

  public int compareTo(Object other)
  {
  Student localStudent = (Student) other;
  int result = (fullName.getName()).compareTo((localStudent.getName()).getName());

  if (result == 0)
  {   
      // last names are equal; check first
     result = city.compareTo(localStudent.getCity());
  }  // end if 

  return result; 
  } // end compareTo

错误是:

  StudentInterface si = new Student();
  si.setCity("Kingston");
  NameInterface ni = new Name("Andrew","Pletch");
  si.setName(ni);

  StudentInterface si2 = new Student();
  si2.setCity("Kingston");
  NameInterface ni2 = new Name("Aram","Agajanian");
  si2.setName(ni2);
  System.out.println(" compare as (should be +ve) " + si.compareTo(si2));

我的结论是“对象其他”不符合“StudentInterface”。我该如何解决这个问题?谢谢大家。

1 个答案:

答案 0 :(得分:1)

将compareTo添加到界面。所有使用的方法都必须在变量的类型上表示。 si的类型为StudentInterface,因此您只能使用在StudentInterface上声明的方法。