Kotlin for Android Developers


Download 1.04 Mb.
Pdf ko'rish
bet27/79
Sana18.06.2023
Hajmi1.04 Mb.
#1588404
1   ...   23   24   25   26   27   28   29   30   ...   79
Bog'liq
Kotlin for Android Developers Learn Kotlin the Easy Way While Developing an Android App ( PDFDrive )

9.1 Extra functions
Along with a data class, we get a handful of interesting functions for free, apart from the properties
we already talked about (which prevents us from writing getters and setters):

equals()
: it compares the properties from both objects to ensure they are identical.

hashCode()
: we get a hash code for free, also calculated from the values of the properties.

copy()
: you can copy an object, modifying the properties you need. We’ll see an example later.
• A set of numbered functions that are useful to map an object into variables. It will also be
explained soon.
9.2 Copying a data class
If we use immutability, as talked some chapters ago, we’ll find that if we want to change the state of
an object, a new instance of the class is required, with one or more of its properties modified. This
task can be rather repetitive and far from clean. However, data classes include the
copy()
method,
which will make the process really easy and intuitive.
For instance, if we need to modify the temperature of a
Forecast
, we can just do:
1
val f1 = Forecast(Date(), 27.5f, "Shiny day")
2
val f2 = f1.copy(temperature = 30f)
This way, we copy the first forecast and modify only the
temperature
property without changing
the state of the original object.
31


9 Data Classes
32
Be careful with immutability when using Java classes
If you decide to work with immutability, be aware that Java classes weren’t designed with
this in mind, and there are still some situations where you will be able to modify the state.
In the previous example, you could still access the
Date
object and change its value. The
easy (and unsafe) option is to remember the rules of not modifying the state of any object,
but copying it when necessary.
Another option is to wrap these classes. You could create an
ImmutableDate
class which
wraps a
Date
and doesn’t allow to modify its state. It’s up to you to decide which solution
you take. In this book, I won’t be very strict with immutability (as it’s not its main goal),
so I won’t create wrappers for every potentially dangerous classes.

Download 1.04 Mb.

Do'stlaringiz bilan baham:
1   ...   23   24   25   26   27   28   29   30   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling