Book Image

Programming Kotlin

Book Image

Programming Kotlin

Overview of this book

Quickly learn the fundamentals of the Kotlin language and see it in action on the web. Easy to follow and covering the full set of programming features, this book will get you fluent in Kotlin for Android.
Table of Contents (20 chapters)
Programming Kotlin
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Customer Feedback
Preface

Type projection


In the Type variance section, we worked through examples of covariance and contravariance, and how each of these restricts type parameters to be used as input types or return types respectively. This is usually not an issue when we are defining our own interfaces and classes as we can come up with the correct abstractions required.

But what about the case where someone else has defined a class to be invariant and you require it to be used in a covariant or contravariant way? Kotlin addresses this by introducing a powerful addition called type projections.

When using type parameters, there is a distinction between use site and declaration site variance. Use site variance is the term used when the variance of type parameters is set by the variable itself, as in Java. Declaration site variance is the term used when the type or function determines the variance, as in Kotlin.

Type projections allow us to specify variance at the use site instead. Let's revisit our earlier example...