2

你会认为 Java 中的自动装箱是一种多态形式吗?换句话说,你认为自动装箱扩展了 Java 的多态能力吗?

Scala 中的隐式转换怎么样?

我的观点是它们都是多态性的例子。这两个特性都允许以统一的方式处理不同数据类型的值。

我的同事不同意我的观点。谁是对的?

4

2 回答 2

8

来自维基百科

子类型多态性,在面向对象编程的上下文中几乎普遍称为多态性,是一种类型 A 出现并像另一种类型 B 一样使用的能力。

Scala 中的隐式转换是转换。一个对象被转换为另一个对象。

自动装箱是对象的创建(同样是转换)。

因此,这些不是多态性。

于 2010-05-21T16:21:32.163 回答
1

我个人认为自动装箱是一种有时会产生意想不到的结果的黑客行为。

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

自动装箱的棘手部分是它不是真正的强制转换,它(仅)更改类型,但更多的是值转换。

于 2010-05-21T16:21:51.010 回答