Только что случайно наткнулся на два вида преобразований (раньше даже внимания не обращал, что они разные и использовал первое преобразование для неприметивных объектов, с применением instanceof, а остальное — для преобразования примитивных): String text = (String) textField.getText() String text = String.valueOf(textField.getText()) Чем отличаются эти преобразования и есть ли сильные различия?
Ответ Как говорится в ответе на аналогичный вопрос на английском: Кастинг к строке работает, только если объект является строкой: 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), используя метод объектов 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" Обратите внимание на последний пример: при передаче null в String.valueOf() будет возвращена строка "null".