你会认为Java中的自动装箱是一种多态吗?换句话说,你认为autoboxing扩展了Java的多态能力吗?
Scala中的隐式转换怎么样?
我的观点是它们都是多态性的例子。这两个功能允许以统一的方式处理不同数据类型的值。
我的同事不同意我的看法。谁是对的?
答案 0 :(得分:8)
来自Wikipedia:
子类型多态,差不多 普遍称为多态性 在面向对象的上下文中 编程,是一种能力 类型,A,出现和使用类似 另一种类型,B。
Scala中的隐式转换是转化。一个对象被转换为另一个对象。
Autoboxing是一个对象的创建(再次,转换)。
因此,这些不是多态性。
答案 1 :(得分:1)
我个人认为自动装箱是一种有时会出现意外结果的黑客行为。
Boolean b = null;
boolean b2 = b; // oops
自动装箱的棘手部分是它不是真正的演员表,它(仅)改变了类型,但更多的是价值转换。