Полиморфизм, автообоксинг и неявные преобразования
-
04-10-2019 - |
Вопрос
Вы бы рассмотрели AutoBoxing в Java в форме полиморфизма? Поместите еще один способ, как вы думаете, Autoboxing расширяет полиморфные возможности Java?
Как насчет неявных преобразований в Scala?
Мое мнение состоит в том, что они оба примеры полиморфизма. Обе функции позволяют значения различных типов данных одновременно обрабатываться единым образом.
Мой коллега не согласен со мной. Кто прав?
Решение
От Википедия:
Полиморфизм подтипа, почти универсально называемый просто полиморфизмом в контексте объектно-ориентированного программирования, является способность одного типа A, отображаться как и использоваться как другой тип, B.
Неявные преобразования в Scala являются преобразованиями. Один объект превращается в другой объект.
AutoBoxing - это создание объекта (опять же, преобразование).
Следовательно, это не полиморфизм.
Другие советы
Я лично рассмотрим автообкинг как рода взлома иногда неожиданными результатами.
Boolean b = null;
boolean b2 = b; // oops
Сложная часть Autoboxing состоит в том, что она на самом деле не является актером, который (только) изменяет тип, но и больше преобразования стоимости.