toString()の書き換え方法について

2275 ワード

Javaを勉強している人はすべて知っています。Javaはすべての種類がobjectのサブクラスです。したがって、すべてのJavaオブジェクトは、Objectクラスが提供する方法を呼び出すことができます。その中の一つがStringです。なぜToSteringを書き換える方法があるのかを説明します。
 
まず最初にPersionクラスを作成します。簡単にfirstnameとlastnameだけを含みます。もちろん、そのsetterとgetter法を加えます。comp.beanの下に置く:
package com.bean;

public class Persion {
	private String firstname;
	private String lastname;
	public String getFirstname() {
		return firstname;
	}
	public void setFirstname(String firstname) {
		this.firstname = firstname;
	}
	public String getLastname() {
		return lastname;
	}
	public void setLastname(String lastname) {
		this.lastname = lastname;
	}

}
 次に、新しいクラスを作成します。Testという名前で、main関数を含めるようにします。
package com.override;

import com.bean.Persion;
public class Test {

	public static void main(String[] args) {
		Persion p = new Persion();
		p.setFirstname("Fire");
		p.setLastname("Water");
		System.out.println(p.toString());
	}

}
 運転後の結果が見えます。
com.bean.Persion@c17164
 
 注:オブジェクトを印刷して、直接System.out.println(p)ができます。実はjavaはpのtoString()メソッドを自動的に呼び出します。
 
 しかし、私たちが一般的に欲しい結果はそうではありません。object類のtoString()方法は常に対象の実現クラス名+@+hashCode値に戻ります。これは明らかに私たちの需要を満たすことができません。ここではpのフルネームをプリントしたいですが、toStering()を書き換える方法が必要です。toStering()を書き直した後、pはtoStering()メソッドを呼び出す際に、自分のクラスのtoStering()メソッドを優先的に呼び出します。
修正後のクラスは以下の通りです。
 
package com.bean;

public class Persion {
	private String firstname;
	private String lastname;
	public String getFirstname() {
		return firstname;
	}
	public void setFirstname(String firstname) {
		this.firstname = firstname;
	}
	public String getLastname() {
		return lastname;
	}
	public void setLastname(String lastname) {
		this.lastname = lastname;
	}
                //  toString  
	public String toString(){
		return firstname + " " + lastname;
	}
}
 
この時、プリントアウトの結果は
 
Fire Water
 
もちろん、必要に応じて、どのようにオブジェクトを印刷しますか?