Inspectopedia Help

Type parameter can have 'in' or 'out' variance

Reports type parameters that can have in or out variance.

Using in and out variance provides more precise type inference in Kotlin and clearer code semantics.

Example:

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 }

The quick-fix adds the matching variance modifier:

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 }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Kotlin, @snapshot@

Last modified: 13 July 2023