报告可以具有 inout 差异的类型参数。

使用 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) // Compilation error
  }

建议通过快速修复添加匹配的差异修饰符:


  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
  }