回答:
星の投影は、任意のタイプだけでなく、正確に何を知らないいくつかの固定タイプを表す方法として考えると役立つ場合があります。
たとえば、タイプMutableList<*>
は何かのリストを表します(正確にはわかりません)。したがって、このリストに何かを追加しようとしても、成功しません。String
sのリスト、sのリストInt
、または他のリストです。コンパイラは、リストがこのタイプのオブジェクトを受け入れることを確認できないため、このリストにオブジェクトを配置することをまったく許可しません。ただし、このようなリストから要素を取得しようとすると、タイプのオブジェクトが確実に取得さAny?
れAny
ます。これは、Kotlinのすべてのオブジェクトがから継承されるためです。
以下のascoコメントから:
さらに
List<*>
、任意のタイプのオブジェクトを含めることができますが、そのタイプのみであるため、文字列(ただし、文字List<Any>
列のみ)を含めることができますが、文字列と整数などをすべて同じリストに含めることができます。
あなたが暗示する文脈でSomeGeneric<*>
は、はと同等SomeGeneric<out Any?>
です。相当するJavaはSomeGeneric<? extends Object>
です。
「スター投影」と呼ばれる構文。公式ドキュメントは次のとおりです。https://kotlinlang.org/docs/reference/generics.html#star-projections