Java可比接口如何实现?

新手上路,请多包涵

我不确定如何在我的抽象类中实现可比较的接口。我有以下示例代码,我正在使用它来尝试理解它:

 public class Animal{
    public String name;
    public int yearDiscovered;
    public String population;

    public Animal(String name, int yearDiscovered, String population){
        this.name = name;
        this.yearDiscovered = yearDiscovered;
        this.population = population; }

    public String toString(){
        String s = "Animal name: "+ name+"\nYear Discovered: "+yearDiscovered+"\nPopulation: "+population;
        return s;
    }
}

我有一个测试类,它将创建 Animal 类型的对象,但是我想在此类中有一个可比较的接口,以便较早的发现排名高于低。我不知道如何去做这件事。

原文由 Softey 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 362
2 个回答

您只需定义 Animal implements Comparable<Animal>public class Animal implements Comparable<Animal> 。然后你必须按照你喜欢的方式实施 compareTo(Animal other) 方法。

 @Override
public int compareTo(Animal other) {
    return Integer.compare(this.year_discovered, other.year_discovered);
}

使用 compareTo 的实现,具有更高 year_discovered 的动物将获得更高的排序。我希望您通过这个示例了解 ComparablecompareTo 的想法。

原文由 user1983983 发布,翻译遵循 CC BY-SA 3.0 许可协议

你需要:

  • 添加 implements Comparable<Animal> 到类声明;和
  • 实施 int compareTo( Animal a ) 方法来执行比较。

像这样:

 public class Animal implements Comparable<Animal>{
    public String name;
    public int year_discovered;
    public String population;

    public Animal(String name, int year_discovered, String population){
        this.name = name;
        this.year_discovered = year_discovered;
        this.population = population;
    }

    public String toString(){
     String s = "Animal name: "+ name+"\nYear Discovered: "+year_discovered+"\nPopulation: "+population;
     return s;
    }

    @Override
    public int compareTo( final Animal o) {
        return Integer.compare(this.year_discovered, o.year_discovered);
    }
}

原文由 MT0 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏