Entendendo Generics em Kotlin

jackienascimento

Jackie Nascimento

Posted on May 3, 2024

Entendendo Generics em Kotlin

O que são Generics

Generics são uma parte essencial da linguagem Kotlin que permite que escrevamos classes, interfaces, e funções que funcionem com tipos específicos, mas sem declarar esses tipos antecipadamente. Em vez disso, podemos fornecer os tipos quando usarmos essas classes, interfaces ou funções.


Benefícios de usar Generics

  • Reutilização de código: Você pode escrever classes, interfaces e funções que funcionam com qualquer tipo de dado, aumentando a reutilização do código.

  • Segurança de tipo: O uso de generics ajuda a detectar erros de tipo em tempo de compilação, o que pode evitar erros em tempo de execução.

  • Performance: Generics não criam overhead em tempo de execução, pois o tipo é verificado em tempo de compilação.


Como usar Generics em Kotlin

Funções Genéricas

fun <T> listOfNotNull(vararg elements: T?): List<T> {
    return elements.filterNotNull()
}

val listaDeInteiros: List<Int> = listOfNotNull(1, 2, null, 4)
Enter fullscreen mode Exit fullscreen mode

Classes Genéricas

class Caixa<T>(val elemento: T)

val caixaDeInteiro = Caixa(10)
val caixaDeString = Caixa("Olá")
Enter fullscreen mode Exit fullscreen mode

Interfaces Genéricas

interface Repositorio<T> {
    fun salvar(objeto: T)
    fun obter(id: String): T
}

class RepositorioDeCliente : Repositorio<Cliente> {

    private val clientes = mutableListOf<Cliente>()

    override fun salvar(cliente: Cliente) {
        clientes.add(cliente)
        println("Cliente salvo: $cliente")
    }

    override fun obter(id: String): Cliente? {
        return clientes.find { it.id == id }
    }
}
Enter fullscreen mode Exit fullscreen mode

Restrições de tipos (bounded type parameters)

Em Kotlin, você pode restringir quais tipos podem ser usados como argumentos genéricos. Por exemplo, você pode restringir o tipo genérico a ser uma subclasse de uma determinada classe ou implementar uma determinada interface.

class Caixa<T : Number>(val elemento: T)

val caixaDeInteiro = Caixa(10) // Válido
val caixaDeDouble = Caixa(10.0) // Válido
val caixaDeString = Caixa("Olá") // Erro de compilação
Enter fullscreen mode Exit fullscreen mode

Conclusão

Generics são uma ferramenta poderosa em Kotlin, que permite escrever código flexível, seguro e reutilizável. Espero que este artigo tenha ajudado você a entender como usar generics em suas aplicações.


💖 💪 🙅 🚩
jackienascimento
Jackie Nascimento

Posted on May 3, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Entendendo Generics em Kotlin