Expressividade


Com o Kotlin, é muito mais fácil evitar clichês, porque os padrões mais comuns são abordados por padrão no idioma. Por exemplo, em Java, se quisermos criar uma classe de dados, precisaremos escrever (ou pelo menos gerar) esse código:

Java

      
public class Artist {
    private long id;
    private String name;
    private String url;
    private String mbid;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getMbid() {
        return mbid
    }

    public void setMbid(String mbid) {
        this.mbid = mbid;
    }

    @Override public String toString() {
        return "Artist{id=" + id + ", name=" + name + ", url=" + url + ", mbid=" + mbid + "}";
    }
}
      

Com o Kotlin, você só precisa usar uma classe de dados:

Kotlin

      
data class Artist(
    var id: Long,
    var name: String,
    var url: String,
    var mbid: String)
      

Essa classe de dados gera automaticamente todos os campos e acessadores de propriedade, além de alguns métodos úteis, como toString(). Você também obtém equals() e hashCode(), que são muito verbosos e podem ser perigosos se forem implementados incorretamente.