0

タイプパラメータを持つクラスがあると仮定します

class A[T]

Aそして、次のような任意の型パラメータを持つ型のオブジェクトを返すメソッドを記述したいと思います。

def f: A = { ... }

コンパイラーは、typeのtypeパラメーターが欠落していることについて文句を言いますA

A[Any]たとえばA[String]はのサブタイプではないため、を書くことによってこの問題を解決することはできませんA[Any]。しかし、共変アノテーションを使用して、このサブタイプの関係に到達できます+T

f共変アノテーションを使用せずにそのようなメソッドを書くことは可能+Tですか?

4

1 に答える 1

4

存在型を使用できます。

def f: A[_] = { ... }

これは次の省略形です。

def f: A[T forSome { type T }] = { ... }

上限 (または下限) を使用することもできます。

def f: A[_ <: SomeType] = { ... }

これには任意のタイプを割り当てることがTできますが、結果に対して有用なことは何もできない場合があります

于 2012-07-02T11:40:26.060 に答える