代码似乎微不足道,但我不会在返回值理解一两件事:斯卡拉语法查询,返回类型推断
trait JdbcTemplate {
def query(psc: PreparedStatementCreator,
rowMapper: RowMapper): List[_]
}
究竟是什么意思List[_]
这里?不会使用List[Any]
意味着同样的事情?我在哪里可以阅读差异?
代码似乎微不足道,但我不会在返回值理解一两件事:斯卡拉语法查询,返回类型推断
trait JdbcTemplate {
def query(psc: PreparedStatementCreator,
rowMapper: RowMapper): List[_]
}
究竟是什么意思List[_]
这里?不会使用List[Any]
意味着同样的事情?我在哪里可以阅读差异?
鉴于_
意味着你不关心类型和Any
is supertype of everything,两者都是相同的。
Any
是一种特定的,已知的(尽管完全包含)类型。将下划线用作类型参数是所谓的“存在类型”的更为繁琐和更一般的语法的简写。存在类型是非特定的:他们说至少有一种类型可以到这里。它们是通用量化的对偶,是对更常用的无界类型参数的解释。例如,def method[T](t: T) ...
。在这个结构中,T
可以绑定到任何类型,但是在实例化该类型的每个地方(每次发生该方法的调用),它都绑定到特定类型。