Reader small image

You're reading from  Kotlin Design Patterns and Best Practices - Third Edition

Product typeBook
Published inApr 2024
PublisherPackt
ISBN-139781805127765
Edition3rd Edition
Right arrow
Author (1)
Alexey Soshin
Alexey Soshin
author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin

Right arrow

Using constants efficiently

In Java, constants are typically static members of a class. Kotlin introduces companion objects for a similar purpose, but there are more efficient ways of handling constants in Kotlin.

Initially, one might define constants in Kotlin using a companion object:

class Spock {
    companion object {
        val SENSE_OF_HUMOR = "None"
    }
}

However, this approach has some inefficiencies. The Kotlin compiler generates a getter for the constant, introducing an additional layer of indirection. The code using the constant effectively calls a getter method, which is less efficient.

Using JVM pseudocode, the results may look as follows:

String var0 = Spock.Companion.getSENSE_OF_HUMOR();
System.out.println(var0);

To optimize, you can use the const keyword:

class Spock {
    companion object {
        const val SENSE_OF_HUMOR = "None"
    }
}

This modification leads to more efficient bytecode:

public class...
lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Kotlin Design Patterns and Best Practices - Third Edition
Published in: Apr 2024Publisher: PacktISBN-13: 9781805127765

Author (1)

author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin