[Java]自作クラスが持つ値をprintlnする方法(toStringメソッド)

記事内に広告が含まれています。

起きたこと

自作クラスを作り、インスタンスが持つ値を確認したい場面がありました。

    public static void main(String[] args) throws Exception {

        //クラス
        class MyClass{
            //フィールド
            int id;
            String name;

            MyClass(int id, String name){
                this.id = id;
                this.name = name;
            }
        }

        //インスタンス化
        MyClass myclass = new MyClass(1, "aaaaa");// id=1, name=aaaaaのインスタンス

        System.out.println(myclass); //test_toString$1MyClass@7ad041f3
        
    }

上記のコードではメモリアドレスが出力されてうまく行きません。

解決策: toString

解決方法は、自作クラスの中に toString メソッドを定義して値を返すようにすることです。

class MyClass{
            //フィールド
            int id;
            String name;

            MyClass(int id, String name){
                this.id = id;
                this.name = name;
            }

            //解決法:以下のコードを追加
            public String toString(){
                return "id:"+this.id + ", name:"+this.name;
            }
        }

すると、以下のようにこのインスタンスのid, name が表示されるようになります。

System.out.println(myclass);
//id:1, name:aaaaa

まとめ

javaの勉強を始めて日が浅いですが、わかったことをを少しずつまとめていきたいと思います。

参考になれば幸いです。

Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで
誕生から20年を迎え,幅広い分野のプログラミングに欠かせないJavaの基礎から応用までをしっかり解説。Javaの最新仕様(Java 8)に基づく文法から,オブジェクト指向やデザインパターン,そしてビルド,ドキュメンテーション,品質への配慮な...
Java
スポンサーリンク