Kotlin Variante del sito di dichiarazione


Esempio

La varianza del sito di dichiarazione può essere considerata come dichiarazione della varianza del sito di utilizzo una volta per tutte i siti di utilizzo.

  class Consumer<in T> { fun consume(t: T) { ... } }

  fun charSequencesConsumer() : Consumer<CharSequence>() = ...

  val stringConsumer : Consumer<String> = charSequenceConsumer() // OK since in-projection
  val anyConsumer : Consumer<Any> = charSequenceConsumer() // Error, Any cannot be passed
  
  val outConsumer : Consumer<out CharSequence> = ... // Error, T is `in`-parameter

Gli esempi diffusi di varianza del sito di dichiarazione sono List<out T> , che è immutabile in modo che T appaia solo come tipo di valore di ritorno, e Comparator<in T> , che riceve solo T come argomento.