in または out の変性を持つことができるパラメーターを報告します。

inout の変性を使用すると、Kotlin の型推論がより的確に行われるほか、コードのセマンティクスも明確になります。

例:


  class Box<T>(val obj: T)

  fun consumeString(box: Box<String>) {}
  fun consumeCharSequence(box: Box<CharSequence>) {}

  fun usage(box: Box<String>) {
      consumeString(box)
      consumeCharSequence(box) // コンパイルエラー
  }

クイックフィックスを使用すると、マッチする変性修飾子が追加されます。


  class Box<out T>(val obj: T)

  fun consumeString(box: Box<String>) {}
  fun consumeCharSequence(box: Box<CharSequence>) {}

  fun usage(box: Box<String>) ++{
      consumeString(box)
      consumeCharSequence(box) // OK
  }