DEV Community

Jackie Nascimento
Jackie Nascimento

Posted on

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.


Top comments (0)