javaの参考書などをみているとtoStringメソッドをオーバーライドして使っているのがあるのですが、これは何の意味があるのでしょうか?
toStringメソッドは
①Objectクラスに属するメソッド
②インスタンスの内容を文字列表現にして返すメソッド
③クラス名@ハッシュ値」というあまり役に立たない情報しか返さないメソッド
ということはわかりました。
http://www.milk-island.net/document/java/kihon/k3/
を内容を借りています。
コード public class Dog { String name; //名前 int cryCount; //鳴く回数 /** * コンストラクタ。 * @param name 名前 * @param cryCount 鳴く回数 */ public Dog(String name, int cryCount) { this.name = name; this.cryCount = cryCount; } } public class K303 { /**メインメソッド。*/ public static void main(String[] args) { // インスタンスを作成 Dog dog1 = new Dog("クロ", 5); // Dogインスタンスの内容を表示 System.out.println("変数 dog1の参照先インスタンスの内容は " + dog1); } }
この結果は
変数 dog1の参照先インスタンスの内容は toStringメソッド.Dog@1db9742
になります。
コード public class Dog { String name; //名前 int cryCount; //鳴く回数 /** * コンストラクタ。 * @param name 名前 * @param cryCount 鳴く回数 */ public Dog(String name, int cryCount) { this.name = name; this.cryCount = cryCount; } @Override public String toString() { return "[" + name + ":" + cryCount + "]"; } } public class K303 { /**メインメソッド。*/ public static void main(String[] args) { // インスタンスを作成 Dog dog1 = new Dog("クロ", 5); // Dogインスタンスの内容を表示 System.out.println("変数 dog1の参照先インスタンスの内容は " + dog1); } }
これの結果は
変数 dog1の参照先インスタンスの内容は [クロ:5]
になります。
オーバーライドしているのでこのような結果になるのはわかるのですが、これはなにかメリットがあるのでしょうか?
また、
コード public String str() { return "[" + name + ":" + cryCount + "]"; } // Dogインスタンスの内容を表示 System.out.println("変数 dog1の参照先インスタンスの内容は " + dog1.str());
上のようにDogクラスのオーバーライドしたtoStringメソッドをstrメソッドに変えて、K303クラスの("変数 dog1の参照先インスタンスの内容は " + dog1);を("変数 dog1の参照先インスタンスの内容は " + dog1.str());に変更しても同じ結果を得られるのでtoStringメソッドを使わなくてもいいように思います。
toStringメソッドを使う理由、toStringメソッドではいけない理由が何かあるのでしょうか?
toStringメソッドを使う理由、メリットを教えていただきたいです。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/27 01:52
2017/03/27 01:55