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

发布于 2024-09-03 00:05:16 字数 163 浏览 3 评论 0原文

您认为 Java 中的自动装箱是多态性的一种形式吗?换句话说,您认为自动装箱扩展了 Java 的多态功能吗?

Scala 中的隐式转换怎么样?

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

我的同事不同意我的观点。谁是对的?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

時窥 2024-09-10 00:05:16

来自维基百科

亚型多态性,几乎
一般称为多态性
在面向对象的背景下
编程,是一种能力
键入 A,显示为和使用方式如下
另一种类型,B。

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

自动装箱是对象的创建(同样是转换)。

因此,这些不是多态性。

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.

莫多说 2024-09-10 00:05:16

我个人认为自动装箱是一种黑客行为,有时会产生意想不到的结果。

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

自动装箱的棘手部分在于它并不是真正的强制转换,它(仅)更改类型,而更多的是值转换。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文