Skip to Main Content
Kotlin Cookbook
book

Kotlin Cookbook

by Ken Kousen
November 2019
Intermediate to advanced content levelIntermediate to advanced
254 pages
4h 55m
English
O'Reilly Media, Inc.
Content preview from Kotlin Cookbook

Chapter 8. Kotlin Delegates

This chapter talks about delegates in Kotlin. You’ll learn how to use delegates in the standard library, including lazy, observable, vetoable, and notNull, as well as create your own. Class delegates let you replace inheritance with composition, and property delegates replace the getters and setters for a property with those from another class.

In addition to the basic demonstrations, this chapter also shows how some of the standard delegates are implemented in the library, as examples of good idiomatic usage.

8.1 Implementing Composition by Delegation

Problem

You want to create a class that contains instances of other classes and delegate behavior to them.

Solution

Create interfaces that contain the delegation methods, implement them in classes, and build the wrapper class out of them using the keyword by.

Discussion

Modern object-oriented design tends to favor composition rather than inheritance1 as a way to add functionality without strong coupling. In Kotlin, the keyword by allows a class to expose all the public functions in a contained object through the container.

For example, a smartphone contains both a phone and a camera, among other components. If you think of the smartphone as a wrapper object, and the internal phone and camera as contained objects, the goal is to write the smartphone class so that its functions invoke the corresponding ones in the contained instances.

To do this in Kotlin, you need to create interfaces for the exposed ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Functional Kotlin

Functional Kotlin

Mario Arias, Rivu Chakraborty
Kotlin Programming Cookbook

Kotlin Programming Cookbook

Aanand Shekhar Roy, Rashi Karanpuria
Functional Programming in Kotlin

Functional Programming in Kotlin

Runar Bjarnason, Paul Chiusano, Marco Vermeulen
Learning Concurrency in Kotlin

Learning Concurrency in Kotlin

Miguel Angel Castiblanco Torres

Publisher Resources

ISBN: 9781492046660Errata PageSupplemental Content