Kotlin Tip #31: Leverage Operator Overloading for Intuitive Code Design — 100 Kotlin Tips in 100 Days

Raphael De Lio
Kotlin with Raphael De Lio
2 min readMar 11, 2024

Twitter | LinkedIn | YouTube | Instagram
Tip #30: Use reified type parameters to avoid type erasure

Operator overloading in Kotlin allows you to provide custom implementations for the operations of your objects using predefined operator symbols. For example, you can define how the “+” operator should work for your class. This makes your objects work with Kotlin’s standard operators for intuitive and concise code.

Operator overloading is achieved by implementing specific functions in your classes, each corresponding to a Kotlin operator, such as +, -, *, /. These functions are marked with the operator keyword, signaling to the Kotlin compiler that you're defining an operator function.

Consider a simple Point class representing a coordinate in a 2D space:

data class Point(val x: Int, val y: Int)

Now, let’s say you want to add two Point instances, expecting a new Point whose coordinates are the sum of the coordinates of the original points. Normally, you'd need a method like add(). However, with operator overloading, you can simply use the + operator:

Overloading operators makes your code shorter and easier to understand, as it looks more like the math it comes from. This way, you group the steps for complex actions together, making your code simpler to manage. Kotlin uses strict rules for changing how operators work to avoid confusion, ensuring changes are logical for the type of information handled.

It’s best to change operators only when it clearly helps your code and keeps it easy to follow. Using this feature wrongly can make your code hard to understand. When you decide to change an operator's function, like +, do it in a way that feels natural, sticking to its usual meaning. For example, using + should always add things together, and swapping the order of things being added (a + b to b + a) should not change the outcome, keeping the operation straightforward and predictable.

I hope you have enjoyed this tip of our series! Don’t forget to subscribe and stay tuned for more Kotlin tips!

Stay curious!

Tip #32: Using Delegation to Enhance Classes Without Inheritance

Contribute

Writing takes time and effort. I love writing and sharing knowledge, but I also have bills to pay. If you like my work, please, consider donating through Buy Me a Coffee: https://www.buymeacoffee.com/RaphaelDeLio

Or by sending me BitCoin: 1HjG7pmghg3Z8RATH4aiUWr156BGafJ6Zw

Follow Me on Social Media

Stay connected and dive deeper into the world of Kotlin with me! Follow my journey across all major social platforms for exclusive content, tips, and discussions.

Twitter | LinkedIn | YouTube | Instagram

--

--