起きたこと
自作クラスを作り、インスタンスが持つ値を確認したい場面がありました。
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)に基づく文法から,オブジェクト指向やデザインパターン,そしてビルド,ドキュメンテーション,品質への配慮な...