Kotlin, primeiros passos

Felipe Oliveira
Android Dev BR
Published in
3 min readApr 3, 2016

Kotlin é uma linguagem da JetBrains, famosa por suas IDE's (RubyMine, IntelliJ, PhpStorm, etc), que foi construída para ser usada internamente pela empresa e foi pensada visando melhor legibilidade, produtividade e suprir limitações que a JetBrains vinha enfrentando com Java. Após avaliar as linguagens que rodam na JVM, a JetBrains decidiu escrever o Kotlin. Como o objetivo era a melhoria dos seus produtos, foi dada bastante atenção na interoperabilidade com a liguagem Java.

Interoperabilidade

Uma das principais caracteristicas da liguagem é o seu foco na interoperabilidade, você pode facilmente chamar código Java no seu código Kotlin e vice-versa. Essa com certeza é uma das features mais sedutoras da linguagem , já que não será necessário migrar de um linguagem para outra de forma drástica.

Null Safety

Quem nunca teve de tratar um NullPointerException? O sistema de tipos do Kotlin distingue as referências que podem ou não ser nulas:

var name: String = "Kotlin"
name = null // error
var name: String? = "Kotlin"
name = null // is ok!

Note que no tipo String com ? pode ser atribuido valor nulo, e poderemos fazer chamadas seguras:

name?.length

Se name for null a chamada ao método length não será feita, mas podemos também forçar essa chamada:

name!!.length

Dessa forma, se name for null teremos uma exception explicita que deverá ser tratada.

Extension Methods

Similar em outras linguagens, Kotlin pode declarar métodos em tipos que você não controla , por exemplo:

fun String.hello(): String{
return “Hello ${this}”
}

val x = "Kotlin"
print(x.hello()) // prints "Hello Kotlin"

Nesse caso foi declarado um método dentro do tipo String, um exemplo mais adentro do mundo Android seria esse:

fun ImageView.load(url: String){
Picasso.with(context).load(url).into(this)
}

Agora qualquer ImageView pode chamar o método load e carregar uma imagem passando uma url.

Extensions trazem um grande ganho em legibilidade, pois evita que tenhamos de escrever os famigerados Utils (StringUtils, FileUtils , etc), que com certeza todo dev Android já deve ter escrito algum dia.

Outras coisas legais

  • Data class: Como o próprio nome já diz, são classes responsáveis por agrupar dados em um tipo de semântica, semelhante ao que o AutoValue faz, mas de forma muito mais elegante:
data class Contact(val name:String,val cellNumber: String)

Essa classe já disponibiliza métodos como equal, hashCode, toString e clone.

  • Default arguments : Com este recurso podemos predefinir valor a um atributo:
// declaração de método
fun Activity.toast(message: String, duration: Int = Toast.LENGTH_LONG){
Toast.makeText(this,message,duration).show()
}
// construtor de um classe
class Contact(val email: String, val active: Boolean = true)

Desta forma, o método recebe apenas o parâmetro message de forma obrigatória e o duration é opcional, daí caso você não queira usar aquele valor que foi definido como padrão, você pode chamar o método com um parâmetro ou dois:

toast("Hello Kotlin")
//ou
toast("Hello Kotlin" , Toast.LENGTH_SHORT)
  • Algumas mudanças: Durante criação da linguagem o time tomou algumas decisões que eu achei bem interessante, imagino eu que são por questões de design, para que tenhamos um código mais limpo.

As classes em Kotlin são final por padrão (por conta do design da linguagem). Desta forma, elas não podem ser extendidas, obrigando que o desenvolvedor cuide melhor de classes que servem a este propósito.

class Student{
... //não pode ser extendida
}
open class Person{
...//pode ser extendida
}

Atributos também tiveram algumas mudanças. Usamos var e val para declarar atributos, mas forma de declarar os tipos também mudou. Os tipos não são mais obrigatórios, ou seja, o compilador consegue inferir o tipo na maioria dos casos. Exemplo:

var name: String = "Kotlin" // após o nome do atributo declaramos o tipovar name = "Kotlin" // Caso o tipo não seja declarado o compilador vai inferir o tipo

Kotlin é uma linguagem com muito mais recursos, que eu com certeza não consegui mostrar nesse texto. Mas espero que tenham gostado do artigo e que ele tenha despertado a curiosidade de vocês para começar a brincar com Kotlin. Para quem quiser começar, é só vir aqui nesse link.

Um abraço e até a próxima!

--

--