- Kotlin for Enterprise Applications using Java EE
- Raghavendra Rao K
- 313字
- 2021-06-10 18:49:24
Immutability
Immutability is the opposite of mutation. Mutation is where we modify the state of an object. Mutation is error-prone and makes debugging difficult. Kotlin emphasizes immutability with val, which makes a variable immutable. Its collection types are also immutable by default. Once the val or collection is initialized, it is guaranteed to hold the same value. Immutability makes code easier to write and use and the internal state of the application will be more consistent.
Let's consider the following code sample:
object ImmutabilityTest {
@JvmStatic
fun main(args: Array<String>) {
val msg = "Hello"
msg = "hi"
println(msg)
}
}
In the preceding code, we created a immutable variable, msg, assigned a value. We then try to change its value.
If we compile this code, it gives us a compilation error that the value of msg cannot be changed:
[INFO] Changes detected - recompiling the module! [INFO] Compiling 2 source files to ..\Intermixing Java and Kotlin\myJavaApp\target\classes [INFO] [INFO] --- kotlin-maven-plugin:1.2.41:compile (compile) @ myJavaApp ---
[ERROR] ..\Intermixing Java and Kotlin\myJavaApp\src\main\java\ImmutabilityTest.kt: (5, 9) Val cannot be reassigned
Consider the following example as well:
object ImmutabilityTest {
@JvmStatic
fun main(args: Array<String>) {
val msg: String
msg = "Good Morning"
msg = "Good Evening"
println(msg)
}
}
In the preceding code, we created a immutable variable, msg, which is of the String type. Note that we declared the type explicitly here and varied the initialization of msg. When we are varying the initialization, we have to declare the type explicitly. We then try to change its value.
If we compile this code, it also gives us a compilation error that the value of msg cannot be changed:
[INFO] Changes detected - recompiling the module! [INFO] Compiling 2 source files to ..\Intermixing Java and Kotlin\myJavaApp\target\classes [INFO] [INFO] --- kotlin-maven-plugin:1.2.41:compile (compile) @ myJavaApp ---
[ERROR] ..\Intermixing Java and Kotlin\myJavaApp\src\main\java\ImmutabilityTest.kt: (6, 9) Val cannot be reassigned
- Learning Chef
- 數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)(Java語言實(shí)現(xiàn))
- Python零基礎(chǔ)快樂學(xué)習(xí)之旅(K12實(shí)戰(zhàn)訓(xùn)練)
- Python機(jī)器學(xué)習(xí)經(jīng)典實(shí)例
- Elasticsearch Server(Third Edition)
- Mastering React
- Getting Started with Eclipse Juno
- R用戶Python學(xué)習(xí)指南:數(shù)據(jù)科學(xué)方法
- Java語言程序設(shè)計(jì)教程
- Developing SSRS Reports for Dynamics AX
- Illustrator CC平面設(shè)計(jì)實(shí)戰(zhàn)從入門到精通(視頻自學(xué)全彩版)
- Python趣味編程與精彩實(shí)例
- JavaScript從入門到精通(視頻實(shí)戰(zhàn)版)
- Modernizing Legacy Applications in PHP
- Learning Concurrency in Python