0Pricing
Kotlin Academy · Aula

Declaração object: singletons do Kotlin

Crie singletons com object e entenda seu ciclo de vida.

Declaração object: singletons do Kotlin é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.

object como Singleton

Uma declaração object cria uma única instância — um singleton seguro para threads e inicializado de forma tardia — com uma linha de código.

Declarando um Singleton

Use object Name { ... } para declarar um singleton com estado e métodos.

object Logger {
    fun log(msg: String) = println("[LOG] $msg")
}
fun main() {
    Logger.log("App started")
    Logger.log("User signed in")
}

Estado de um Singleton

Os singletons podem manter estado mutável — acessível de qualquer lugar e compartilhado globalmente.

object Counter {
    var count = 0
    fun increment() { count++ }
}
fun main() {
    Counter.increment()
    Counter.increment()
    Counter.increment()
    println(Counter.count) // 3
}

Inicialização tardia

A instância única é criada na primeira vez que é acessada — nunca antes. A JVM garante que isso seja seguro para threads.

object Heavy {
    init { println("Initializing Heavy...") }
    fun work() = "done"
}
fun main() {
    println("Before access")
    println(Heavy.work()) // triggers init now
    println(Heavy.work()) // no init again
}

Implementando interfaces

Os singletons podem implementar interfaces, o que é útil para callbacks e estratégias.

interface Greeter { fun greet(name: String): String }
object EnglishGreeter : Greeter {
    override fun greet(name: String) = "Hello, $name!"
}
fun main() {
    println(EnglishGreeter.greet("Ada"))
}

Estendendo uma classe

Os objetos também podem herdar de classes abertas.

open class Animal(val sound: String) {
    fun makeSound() = "The animal says $sound"
}
object Cat : Animal("Meow")
fun main() {
    println(Cat.makeSound())
}

Prática: configuração

Os singletons são ideais para configurações de todo o aplicativo que não mudam após a inicialização.

object AppConfig {
    val apiUrl = "https://api.example.com"
    val timeout = 5000
    val version = "1.0.0"
}
fun main() {
    println("v${AppConfig.version} -> ${AppConfig.apiUrl}")
}

Prática: funções utilitárias

Agrupe funções auxiliares relacionadas e sem estado em um object, como métodos estáticos com namespace.

object StringUtils {
    fun reverse(s: String) = s.reversed()
    fun capitalize(s: String) = s.replaceFirstChar { it.uppercase() }
}
fun main() {
    println(StringUtils.reverse("Kotlin"))
    println(StringUtils.capitalize("hello"))
}

Igualdade e identidade

Existe apenas uma instância, portanto === sempre retorna true para a mesma referência de objeto.

object MySingleton
fun main() {
    val a = MySingleton
    val b = MySingleton
    println(a === b) // true
}

object versus class

Uma class comum precisa ser instanciada. Um object é a própria instância — não há chamada ao construtor.

class Service { fun ping() = "pong (class)" }
object SingletonService { fun ping() = "pong (object)" }
fun main() {
    val s = Service() // instance per call
    println(s.ping())
    println(SingletonService.ping()) // no instantiation
}

Segurança de threads

A criação da instância singleton é segura para threads graças às garantias de carregamento de classes da JVM. Qualquer estado mutável que você adicionar internamente será de sua responsabilidade.

object SharedCounter {
    @Volatile var count = 0
    @Synchronized fun inc() { count++ }
}
fun main() {
    repeat(1000) { SharedCounter.inc() }
    println(SharedCounter.count) // 1000
}

Verificação rápida

Quantas instâncias existem para uma declaração Kotlin object?

Recapitulação

object Name { ... } declara um singleton seguro para threads e inicializado de forma tardia, com estado, métodos, interfaces e herança. Use objetos para configurações, grupos de funções utilitárias e serviços sem estado.

Perguntas Frequentes

A aula “Declaração object: singletons do Kotlin” é grátis?

Sim — o texto completo de “Declaração object: singletons do Kotlin” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.

O que vou aprender em “Declaração object: singletons do Kotlin”?

Crie singletons com object e entenda seu ciclo de vida. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Kotlin Academy?

Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Declaração object: singletons do Kotlin”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Kotlin Academy?

Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Declaração object: singletons do Kotlin
  2. companion object: membros semelhantes a estáticos no Kotlin
  3. Objetos anônimos e expressões de objeto
  4. Métodos de fábrica com companion object
← Voltar para Kotlin Academy