O'Reilly logo

Programming Kotlin by Stefan Bocutiu, Stephen Samuel

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Standard annotations

The Kotlin standard library includes several annotations that affect the output of the compiler. Some we have seen already and others are introduced here for the first time.

@JvmName

Due to erasure in the JVM, it is impossible to declare two functions with the same name and the same erased signature. For example, the following declarations in Java would result in a compile error:

    public void foo(list: List<String>) 
    public void foo(list: List<Int>) 

Note

Erasure is caused by the fact that the JVM does not retain type parameters. This means, among other examples, that variables of List<String> and List<Int> both compile to List<Any>.

The most commonly used solution to this problem is to name the methods differently. But sometimes ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required