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?

4

2 に答える 2

8

ウィキペディアから:

サブタイプ ポリモーフィズムは、オブジェクト指向プログラミングのコンテキストではほぼ普遍的に単なるポリモーフィズムと呼ばれ、ある型 A が別の型 B として表示され、そのように使用される機能です。

Scala での暗黙の変換は変換です。1 つのオブジェクトが別のオブジェクトに変換されます。

オートボクシングとは、オブジェクトの作成です (これも変換です)。

したがって、これらはポリモーフィズムではありません。

于 2010-05-21T16:21:32.163 に答える
1

個人的には、オートボクシングは予期せぬ結果をもたらす一種のハックだと考えています。

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

オートボクシングのトリッキーな部分は、実際には型を (のみ) 変更するキャストではなく、値の変換であるということです。

于 2010-05-21T16:21:51.010 に答える