Java で toString メソッドをオーバーライドする

Rupam Yadav 2023年10月12日
Java で toString メソッドをオーバーライドする

文字列はすべてのプログラムの重要な部分であるため、Java で文字列を使用することがよくあります。このチュートリアルでは、概念をよりよく理解するための簡単な例を使用して、Java で tostring() メソッドをオーバーライドする方法を説明します。

Java で@Override アノテーションを使用して toString() メソッドをオーバーライドする

toString() メソッドは、Java のすべてのクラスのスーパークラスである Object クラスの一部です。これは、すべてのクラスに独自の toString() メソッドがあることを意味します。ただし、デフォルトの toString() メソッドから毎回目的の出力が得られるわけではありません。メソッドをオーバーライドし、必要に応じてカスタマイズする必要がある場合です。

toString() メソッドをオーバーライドする方法を示すために、2つの例を示します。1つは toString() メソッドをオーバーライドせず、もう 1つはメソッドをオーバーライドします。

以下の例では、コンストラクターで初期化される 3つの変数を持つクラス ExampleClass があります。渡された引数を使用して ExampleClass クラスのオブジェクトを作成し、そのオブジェクトを出力すると、意味がなく、人間が読み取れないオブジェクトが取得されます。これは、exampleClass を出力するときに、デフォルトの toString() が呼び出されるためです。しかし、変数の値を文字列として出力したいと思います。これを行うには、次の例で toString() メソッドをオーバーライドします。

public class OverrideToString {
  public static void main(String[] args) {
    ExampleClass exampleClass = new ExampleClass("Alex", "Novel", 24);

    System.out.println(exampleClass);
  }
}

class ExampleClass {
  String firstName;
  String lastName;
  int age;

  ExampleClass(String firstName, String lastName, int age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }
}

出力:

ExampleClass@37bba400

次のコードでは、前と同じ例を使用しますが、今回は@Override アノテーションを使用して toString() メソッドをオーバーライドし、メソッド名を toString() として返しタイプ String を記述します。。これは手動で行うことも、多くの IDE に含まれているショートカットを使用することもできます。

メソッドは文字列を返すので、それを作成する必要があります。変数を String と連結して、単一の String を作成します。最後に、exampleClass のオブジェクトを作成して出力すると、渡された変数の値を含む文字列として出力が取得されます。これは、toString() メソッドをオーバーライドして独自の実装を指定するために発生します。

public class OverrideToString {
  public static void main(String[] args) {
    ExampleClass exampleClass = new ExampleClass("Alex", "Novel", 24);

    System.out.println(exampleClass);
  }
}

class ExampleClass {
  String firstName;
  String lastName;
  int age;

  ExampleClass(String firstName, String lastName, int age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }

  @Override
  public String toString() {
    return "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", age=" + age;
  }
}

出力:

firstName='Alex', lastName='Novel', age=24
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Override