Learning Kotlin: Data Classes

Note * The code being referenced. * This is the 7th post in a multipart series. If you want to read more, see our series index.

WOW! Data Classes are awesome! I really like a lot of how classes are handled in Kotlin, but Data Classes are the pinnacle of that work. The effort for this Koan is to convert this Java class to Kotlin:

package i_introduction._6_Data_Classes
import util.JavaCode

public class JavaCode6 extends JavaCode {
    public static class Person {
        private final String name
        private final int age

        public Person(String name, int age) {
            this.name = name
            this.age = age
        }

        public String getName() {
            return name
        }

        public int getAge() {
            return age
        }
    }
}

and what does that look like in Kotlin?

data class Person(val name: String, val age: Int)

Yup, a single line. The data annotation adds a number of important functions (like toString() and copy()). We then declare the class with a constructor that takes two parameters, which both become properties. Another important aspect I learned with this one is that Kotlin has both a val and var keyword for variables. We’ve seen var already, and val is for read-only variables.