とはどのような違いがあるのでしょうか。
Object foo = "something";
String bar = String.valueOf(foo);
と
Object foo = "something";
String bar = (String) foo;
文字列へのキャストは、オブジェクトが実際に文字列である場合にのみ機能します。
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
オブジェクトが他のものである場合はうまくいきません。
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()
しかし、この関数に渡されたものは何でも String
に変換しようとします。これはプリミティブ (42
) とオブジェクト (new Integer(42)
, using that object's toString()
) の両方を扱うことができます。
String str;
str = String.valueOf(new Integer(42)); // str will hold "42"
str = String.valueOf("foo"); // str will hold "foo"
Object nullValue = null;
str = String.valueOf(nullValue); // str will hold "null"
特に最後の例では、String.valueOf()
に null
を渡すと、文字列 "null"
が返されることに注意してください。
どちらも String
の場合は同じ output を生成します。
提供されたオブジェクトが文字列でない場合、キャスティング
は失敗します`。