Страницы

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

вторник, 26 ноября 2019 г.

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


Только что случайно наткнулся на два вида преобразований (раньше даже внимания н
обращал, что они разные и использовал первое преобразование для неприметивных объектов, с применением instanceof, а остальное — для преобразования примитивных): 


String text = (String) textField.getText();
String text = String.valueOf(textField.getText());


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


Ответы

Ответ 1



Как говорится в ответе на аналогичный вопрос на английском: Кастинг к строке работает, только если объект является строкой: 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".

Ответ 2



Второй вариант переводит любой тип в String. Это даже не приведение типа, а ПРЕДСТАВЛЕНИЕ параметра этой функции в виде строки. Первый же вариант - да, чистое "кастование"

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

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