你会认为 Java 中的自动装箱是一种多态形式吗?换句话说,你认为自动装箱扩展了 Java 的多态能力吗?
Scala 中的隐式转换怎么样?
我的观点是它们都是多态性的例子。这两个特性都允许以统一的方式处理不同数据类型的值。
我的同事不同意我的观点。谁是对的?
你会认为 Java 中的自动装箱是一种多态形式吗?换句话说,你认为自动装箱扩展了 Java 的多态能力吗?
Scala 中的隐式转换怎么样?
我的观点是它们都是多态性的例子。这两个特性都允许以统一的方式处理不同数据类型的值。
我的同事不同意我的观点。谁是对的?
来自维基百科:
子类型多态性,在面向对象编程的上下文中几乎普遍称为多态性,是一种类型 A 出现并像另一种类型 B 一样使用的能力。
Scala 中的隐式转换是转换。一个对象被转换为另一个对象。
自动装箱是对象的创建(同样是转换)。
因此,这些不是多态性。
我个人认为自动装箱是一种有时会产生意想不到的结果的黑客行为。
Boolean b = null;
boolean b2 = b; // oops
自动装箱的棘手部分是它不是真正的强制转换,它(仅)更改类型,但更多的是值转换。