关于Scala泛型的简单问题
X[Any]
和 X[_]
之间有什么区别?
例如,让我们考虑下面的两个函数:
def foo(x:X[_]){}
def foo(x:X[Any]){}
上面这些声明之间到底有什么区别?
What is the difference between X[Any]
and X[_]
?
Let's consider, for example, two functions below:
def foo(x:X[_]){}
def foo(x:X[Any]){}
What is exactly the difference between these declarations above?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一个是存在型,第二个是正常型。第一个语法实际上意味着:
这意味着
x
的类型为X[t]
,其中t
可以是任何未指定的输入t
。直观上,
X[_]
表示X
的类型参数不相关,而X[Any]
表示它必须是Any< /代码>。
The first is an existential type, and the second is a normal type. The first syntax actually means this:
What this means is that
x
is of typeX[t]
, wheret
can be any unspecifiedtype t
.Intuitively,
X[_]
means the type parameter ofX
is irrelevant, whereasX[Any]
says it must beAny
.区别在于微不足道,
我无法说出一种情况,即您可以使用 Any 但不能使用 _ ,反之亦然。
The difference is in insignificant
I can not name a situation, when you can use Any but can not use _ and vice verse.