Avatar ·

O que o operador !! (double-bang) faz em Kotlin e para que ele serve?

Olá a todos! Comecei a estudar Kotlin depois de Java e me deparei com um operador estranho `!!`. Por exemplo, vi um código assim:\n\n```kotlin\nval name: String? = getUserName()\nval length = name!!.length\n```\n\nEu entendo que `?` significa que a variável pode ser null. Mas para que serve `!!`? Até onde sei, se tenho certeza de que o valor não é null, posso simplesmente usar `?.` ou escrever `if (name != null)`. E se eu errar, vou receber um NullPointerException — isso é ruim!\n\nEm Java, estou acostumado a verificar null com `if`, mas aqui tem um operador agressivo. Talvez seja uma muleta para quem tem preguiça de escrever verificações? Ou existem situações em que `!!` é realmente justificado? Expliquem, por favor, para que ele serve, como funciona e se vale a pena usá-lo em projetos reais. Exemplos de código são bem-vindos.