views:

141

answers:

2

Would you consider autoboxing in Java to be a form of polymorphism? Put another way, do you think autoboxing extends the polymorphic capabilities of Java?

What about implicit conversions in Scala?

My opinion is that they are both examples of polymorphism. Both features allow values of different data types to be handled in a uniform manner.

My colleague disagrees with me. Who is right?

+7  A: 

From Wikipedia:

Subtype polymorphism, almost universally called just polymorphism in the context of object-oriented programming, is the ability of one type, A, to appear as and be used like another type, B.

Implicit conversions in Scala are conversions. One object gets converted to another object.

Autoboxing is the creation of an object (again, a conversion).

Therefore, these are not polymorphism.

MatthieuF
+1 The interface must not change and the contracts of the interface fulfilled to be a polymorphic.
Thomas Jung
+1  A: 

I personally consider autoboxing as kind of a hack with sometimes unexpected results.

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

The tricky part of autoboxing is that it isn't really a cast, which (only) changes the type, but more of a value conversion.

extraneon
You can set up almost any good Java IDE to highlight the occurrences of auto-unboxing (autoboxing is always safe, your example is about the reverse conversion).
quant_dev