質問: EmptyList` 自分に認識としては、 ``` class Hogehoge( val items: List, val size: Int ) ``` itemsが`List`を取るので、Hogehoge内に渡したListの型がそのまま戻り値となる、という認識でした。 つまり、一つの関数内で2つの `Hogehoge(items, size)`と`Hogehoge(anotherItems, size)`を返すためには、 戻り値をListにするしかないと思っていました。 しかし、最後の`emptyList()`を使った例だと戻り値が`Hogehoge`のままでも大丈夫となります。 これは何故でしょうか?emptyList()の型が`List`ではあるのですが、search関数の戻り値が`Hogehoge`のままで大丈夫な理由がイマイチ掴めません。 どなたか教えて頂ける方居ましたらよろしくお願いします。
回答: > > emptyList()の型がListではあるのですが、search関数の戻り値がHogehogeのままで大丈夫な理由がイマイチ掴めません。 > > > search関数の戻り値がHogehogeなので、emptyList()のTがmogeElementと推論されています。 したがって、`Hogehoge(empltyList(), size)` は `Hogehoge(empltyList(), size)` という呼び出しと同じとなるためコンパイルが通ります。 他方、ジェネリクスを明記して `Hogehoge(empltyList(), size)` とするとコンパイルは通りません。