HOWTO · Java

JavaでComparableを拡張する

このチュートリアルは、Java で Comparable を拡張する方法を示しています

このページの内容

このガイドでは、Java での Extends Comparable Interface について学習します。Comparable<T> と書かれています。これは、Java の多くのクラスによって実装されるインターフェースです。その側面についてもっと学びましょう。

Java での ExtendsComparable<T> インターフェースの実装

このインターフェースには、compareTo(Object o) という 1つのメソッドしかありません。このメソッドは、オブジェクトを注文の指定されたオブジェクトと比較します。

オブジェクトが指定よりも小さい場合は、負の整数を返します。オブジェクトと指定されたオブジェクトが等しい場合はゼロを返します。

同様に、オブジェクトが指定されたオブジェクトより大きい場合は、正の整数を返します。

クラスは Java の Java インターフェースを拡張できないことに注意してください。

インターフェイスは、インターフェイスのみを拡張できます。Java クラスは、Java クラスのみを拡張できます。

Comparable<T> は Java のインターフェースであるため、Comparable インターフェースを拡張するカスタムインターフェースを作成する必要があります。カスタムクラスは、カスタムインターフェイスを実装します。

public class Main {
  public static void main(String[] args) {
    Student s1 = new Student("Bill Gates");
    Student s2 = new Student("James");

    int res = s1.compareTo(s2);
    // comaprison of name of two students using iherited and extended method of
    // compareable.

    System.out.println(res);
  }
}
interface CustomComparable extends Comparable<Student> {
  // Custom interface which extends Comparable.
  // So CustomComparable have inherited method Compareto(Object o)
  public String getName();
}
class Student implements CustomComparable {
  // calss student implements CustomCompareable
  private String name; // String variable
  Student(String s) {
    this.name = s;
  }

  public int compareTo(Student other) { // overiding super method........... .
    return this.name.compareTo(other.getName());
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

出力:

-8

カスタムコンパレータクラスを実装する 2つの学生クラスオブジェクトを作成し、実際の Comparable<T> を拡張するだけです。したがって、ここでこの compareTo() メソッドを使用する方法は次のとおりです。