Delegating Variables and Properties
We'll cover the following
In the examples so far, we focused on delegation at the class level. You may delegate get and set access to properties of objects and local variables too.
When you read a property or a local variable, internally Kotlin calls a getValue()
function. Likewise, when you update a property or a variable, it calls a setValue()
function. By providing as delegate an object with these two methods, you may intercept calls to read and write local variables and objects’ properties.
Delegating variables
You can intercept access, both read and write, to local variables and alter what is returned and where and how the data is stored. To illustrate this facility, let’s create a custom delegate to intercept access of String
variables.
Suppose we’re creating an application that takes users’ comments. The text they enter may be displayed to other users, and we definitely want to be polite. So let’s write a delegate that filters out an offensive word, like “stupid”.
Let’s look at a small script with no filtering:
Get hands-on with 1200+ tech skills courses.