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
- Declaração object: singletons do Kotlin
- companion object: membros semelhantes a estáticos no Kotlin
- Objetos anônimos e expressões de objeto
- Métodos de fábrica com companion object