我很难找到这被称为什么以及定义这样的方法之间的区别是什么:
def method[A](//...//) {}
或者
def method(//...//) {}
另外,是def method[A]
一样的def method[Any]
吗?
帮助将不胜感激。
我很难找到这被称为什么以及定义这样的方法之间的区别是什么:
def method[A](//...//) {}
或者
def method(//...//) {}
另外,是def method[A]
一样的def method[Any]
吗?
帮助将不胜感激。
def method[A]
定义了一个泛型类型 A
。像这样使用,没有细化,它是一个可以被任何类型满足的通配符。(您可以使用类似的语法指定只允许某些子类型[A <: Foo]
,其中Foo
是您定义的类或特征。)
你为什么想做这个?最有可能的是,您需要一个返回与作为参数相同的类型的方法(或其一些变体——也许它需要一个该类型的列表并返回一个该类型的数组):
def method[A](a: A): A = ...
由于您对 . 的任何内容一无所知A
,因此它与Any
.
现在,没有什么特别的A
。你可以把任何东西放在那里,甚至Any
:
def method[Any](a: Any) ... // Don't do this!
但这会非常令人困惑,因为这不是Any
位于继承层次结构顶部的标准类型——它是一个类似于 的泛型类型A
,但名称更长。
如果您不需要使用泛型类型,请省略[A]
. 例如:
def printed[A](a: A): A = { println(a); a } // Generic necessary
def printMe(a: Any) { println(a) } // Not necessary, returns Unit