Полиморфизм, автобокс и неявные преобразования

Считаете ли вы автобокс в Java формой полиморфизма? Иными словами, как вы думаете, автобокс расширяет полиморфные возможности Java?

Как насчет неявных преобразований в Scala?

Мое мнение таково, что они оба являются примерами полиморфизма. Обе функции позволяют обрабатывать значения разных типов данных единообразно.

Мой коллега не согласен со мной. Кто прав?

2 ответа

Решение

Из Википедии:

Полиморфизм подтипа, почти повсеместно называемый просто полиморфизмом в контексте объектно-ориентированного программирования, - это способность одного типа, A, выглядеть и использоваться как другой тип, B.

Неявные преобразования в Scala являются преобразованиями. Один объект преобразуется в другой объект.

Автобокс - это создание объекта (опять же, конверсия).

Следовательно, это не полиморфизм.

Лично я считаю автобокс своего рода взломом с иногда неожиданными результатами.

 Boolean b = null;
 boolean b2 = b; // oops

Сложность автобокса заключается в том, что на самом деле это не приведение, которое (только) изменяет тип, а скорее преобразование значений.

Другие вопросы по тегам