Страницы

Поиск по вопросам

среда, 3 октября 2018 г.

Чем отличается преобразование типов?

Только что случайно наткнулся на два вида преобразований (раньше даже внимания не обращал, что они разные и использовал первое преобразование для неприметивных объектов, с применением 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".

Комментариев нет:

Отправить комментарий