コードは些細なことのように見えますが、戻り値の 1 つのことを理解していません。
trait JdbcTemplate {
def query(psc: PreparedStatementCreator,
rowMapper: RowMapper): List[_]
}
ここで正確に何List[_]
を意味するのですか?List[Any]
を使用しても同じことを意味しませんか? 違いはどこで読めますか?
コードは些細なことのように見えますが、戻り値の 1 つのことを理解していません。
trait JdbcTemplate {
def query(psc: PreparedStatementCreator,
rowMapper: RowMapper): List[_]
}
ここで正確に何List[_]
を意味するのですか?List[Any]
を使用しても同じことを意味しませんか? 違いはどこで読めますか?
Any
特定の既知の (完全に包括的な) タイプです。型パラメーターとしてのアンダースコアの使用は、「存在型」と呼ばれるものの、より扱いにくく、より一般的な構文の省略形です。存在型は非特定的です: 彼らは、ここに行くことができる型が少なくとも 1 つあると言います。それらは、より一般的に使用される無制限の型パラメーターの解釈である普遍的な量化の双対です。例: def method[T](t: T) ...
. このコンストラクトでT
は、任意の型にバインドできますが、その型がインスタンス化される各場所 (そのメソッドへの呼び出しのすべての発生) で、特定の型にバインドされます。
_
つまり、タイプを気にせずAny
、すべてのスーパータイプであるということを考えると、どちらも同じです。