多态性,自动装箱和隐式转换

时间:2010-05-21 16:17:44

标签: java scala polymorphism autoboxing implicit-conversion

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

Scala中的隐式转换怎么样?

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

我的同事不同意我的看法。谁是对的?

2 个答案:

答案 0 :(得分:8)

来自Wikipedia

  

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

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

Autoboxing是一个对象的创建(再次,转换)。

因此,这些不是多态性。

答案 1 :(得分:1)

我个人认为自动装箱是一种有时会出现意外结果的黑客行为。

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

自动装箱的棘手部分是它不是真正的演员表,它(仅)改变了类型,但更多的是价值转换。