Esta página se tradujo automáticamente con la API de traducción de Google Cloud.
Algunas páginas se pueden leer mejor en su totalidad.
El sistema de tipos de Kotlin está diseñado para eliminar la necesidad de valores nulos. Sin embargo, hay momentos en los que se requieren valores nulos, como cuando se interactúa con código heredado escrito en Java. En estos casos, el patrón de objeto nulo se puede utilizar para proporcionar un objeto no nulo en lugar de un valor nulo.
El patrón de objeto nulo es un patrón de diseño que tiene como objetivo eliminar la necesidad de valores nulos. Lo hace proporcionando un objeto no nulo en lugar de un valor nulo. Este objeto no nulo se puede utilizar para representar la ausencia de un valor.
El patrón de objeto nulo funciona creando un objeto que representa la ausencia de un valor. Este objeto se puede utilizar en lugar de un valor nulo. Al objeto se le puede dar un valor predeterminado, como una cadena vacía, o se le puede dar un comportamiento que sea apropiado para la situación.
El patrón de objeto nulo debe usarse cuando se requieren valores nulos, como cuando se interactúa con código heredado escrito en Java.
El patrón de objeto nulo tiene varios beneficios:
El patrón de objeto nulo tiene un inconveniente:
El patrón de objeto nulo se puede implementar en Kotlin siguiendo los siguientes pasos:
El primer paso es crear una interfaz para el objeto. Esta interfaz definirá el contrato para el objeto.
interface MyInterface {
fun doSomething()
}
El segundo paso es crear una clase que implemente la interfaz. Esta clase proporcionará la implementación para el objeto.
class MyClass : MyInterface {
override fun doSomething() {
// do something
}
}
El tercer paso es crear un objeto que represente la ausencia de un valor. Este objeto se puede utilizar en lugar de un valor nulo.
object MyObject : MyInterface {
override fun doSomething() {
// do something
}
}
El patrón de objeto nulo se puede utilizar de la siguiente manera:
fun doSomething(myInterface: MyInterface?) {
if (myInterface != null) {
myInterface.doSomething()
}
}
fun main() {
val myClass: MyClass? = MyClass()
val myObject: MyObject? = MyObject()
doSomething(myClass)
doSomething(myObject)
}