This may sound very basic... can someone please explain the use of the toString()
method and when to effectively use this?
Have done a search on google but could not find any good resource.
ほとんどの言語、toString
または同等の方法では、オブジェクトをテキストで表現できることが保証されています。
これは、ロギング、デバッグ、または遭遇するすべてのオブジェクトを文字列としてレンダリングできる必要があるその他の状況で特に役立ちます。
多くの場合、オブジェクトはカスタム動作を実装toString
して、メソッドが実際にオブジェクト インスタンスについて何かを伝えるようにします。たとえば、Person
クラスはそれをオーバーライドして「姓、名」を返す場合がありますが、Date
クラスはデフォルト設定 (現在のユーザー インターフェイス カルチャなど) に従って書式設定された日付を表示します。
クラスの toString メソッドをオーバーライドしたい状況はいくつかあります (そのほとんどは既存の回答で既に言及されています) が、オブジェクトで toString を明示的に呼び出す必要がある最も一般的な状況の 1 つはStringBuilder を使用して文字列を構築する場合。
public String createString(final String str) {
final StringBuilder sb = new StringBuilder(str);
sb.append("foo");
sb.append("bar");
return sb.toString();
}
したがって:
out.println("You are " + user);
ユーザーがnullの場合、またはtoStringがこの(存在する)インスタンスに対して「James」を表示する場合は、「Youarenull」または「YouareJames」を表示します。
クラスをオーバーライドすることにより、クラスで toString() を使用して、オブジェクトの意味のあるテキスト表現を提供できます。
たとえば、 Person クラスで toString() をオーバーライドして、姓名を返すことができます。
.NET または Java の場合:
一般に、クラスのテキスト表現が必要な場合は、ToString() をオーバーロードする必要があります (クラスにとって意味があると仮定します)。
参照変数を出力すると、次のタスクが発生します。
toString()
メソッドは JVM によって自動的に呼び出されます。デフォルトtoString()
では、次のようにObject.class
表示されます:
ClassName@HexadecimalOfHashCode
クラスでこのメソッドをオーバーライドして、意味のある文字列を表示できます。通常toString()
、メソッドはオブジェクトのコンテンツを出力するために使用されます。このメソッドはString
、StringBuffer
、integer
などの多くの Java 組み込みクラスですでにオーバーライドされています。
コンストラクターを介して初期化するフィールド値と、ゲッターを使用せずに表示するものを表示する必要がある場合に使用されます。
import Test.Date;
public class Employ {
private String firstname;
private String lastname;
private Date DOB;
private Date DOH;
public Employ(String name,String lastname,Date DOB,Date DOH)
{
this.firstname=name;
this.lastname=lastname;
this.DOB=DOB;
this.DOH=DOH;
}
public String toString(){
return String.format("%s %s Birthday %s Hired %s",firstname,lastname,DOB,DOH);
}
public static void main (String args[])
{
Date dob= new Date(12,3,1992);
Date doh= new Date(10,6,2005);
Employ em= new Employ("BOB", "Wrigh", dob,doh);
System.out.println(em);
}
}
toString() を使用して 16 進数のアドレスを回避できます。この問題を解決するには、toString() をオーバーライドする必要があります。そうすれば、元のテキスト形式のデータを取得できます。
To string は、データ型を文字列に変更する必要がある場合に使用する必要があります。int などの組み込み型の場合、期待どおりの文字列表現があります。すなわち
int i = 5;
string s = i.ToString(); //s now equals "5"
tostring メソッドをオーバーロードする必要があるほとんどの複雑な型とすべてのユーザー作成型の文字列「5」を提供します。そうしないと、クラスの名前のみが取得されます。To string を使用すると、独自のオブジェクトで .net に組み込まれた複雑な書式設定を使用できます。datetime クラスのように複雑なフォーマッタを提供して、独自の型を柔軟に使用できます。