Equivalente de funciones estáticas de Java en Kotlin

Kailash Vaviya 30 enero 2023
  1. Equivalente de Kotlin para funciones estáticas de Java
  2. Use los objetos Companion para lograr la funcionalidad estática en Kotlin
  3. Use la anotación @JvmStatic para lograr la funcionalidad estática en Kotlin
  4. Use la función de nivel de paquete para lograr la funcionalidad estática en Kotlin
Equivalente de funciones estáticas de Java en Kotlin

Los desarrolladores de Android que utilizan el lenguaje de programación Java conocen muy bien la palabra clave estática. La palabra clave estática de Java es un modificador de no acceso.

Podemos crear variables y métodos estáticos en Java con la palabra clave static. Ayuda con la eficiencia de la gestión de la memoria.

Java Virtual Machine (JVM) asigna memoria a estas variables y funciones solo una vez, lo que las hace eficientes en términos de memoria. Pero Kotlin es ahora el idioma oficial para el desarrollo de Android.

A medida que los desarrolladores pasan de Java a Kotlin, uno de los mayores obstáculos es crear funciones estáticas en Kotlin. No existe una palabra clave como estático en Kotlin.

En este artículo, aprenderemos el equivalente de la palabra clave estática de Java en Kotlin.

Equivalente de Kotlin para funciones estáticas de Java

Si bien el lenguaje de programación Kotlin no tiene la palabra clave estática, aún podemos lograr la funcionalidad estática en Kotlin.

El principal beneficio del método estático es la eficiencia de la gestión de la memoria. Por lo tanto, para lograr una funcionalidad estática, debemos encontrar una forma que garantice que la memoria se asigne solo una vez y que el valor no se pueda cambiar.

Hay tres formas de lograr una funcionalidad estática en Kotlin:

  • Usando el objeto companion
  • Usando la anotación @JvmStatic
  • Uso de la función de nivel de paquete

Pasaremos por cada uno de los tres métodos. También veremos ejemplos de cómo implementarlos.

Use los objetos Companion para lograr la funcionalidad estática en Kotlin

Podemos crear un objeto complementario utilizando la palabra clave compañero. JVM almacenará los objetos complementarios en el mismo archivo que la clase; por lo tanto, el objeto puede acceder a todas las variables y funciones privadas de la clase.

Los objetos complementarios se inicializan junto con la clase; por lo tanto, la asignación de memoria ocurre solo una vez. La semántica de un objeto complementario es similar a la de un inicializador estático de Java.

Ahora que sabemos qué son los objetos complementarios y cómo funcionan, veamos un ejemplo. En este ejemplo, crearemos un objeto complementario y veremos cómo maneja la administración de memoria para lograr una funcionalidad estática en Kotlin.

fun main(args: Array<String>) {
    // Accessing static variables and methods without creating objects
    println("Welcome!"+'\n' + "Accessing function of the ExampleClass without creating an object."
            + '\n' + ExampleClass.staticFunction());
}

class ExampleClass{
    companion object {
        fun staticFunction(): String {
            return "Static Method!"
        }
    }
}

Producción:

Uso de objetos complementarios para lograr funcionalidad estática en Kotlin

Haga clic aquí para ver la demostración del código de ejemplo anterior.

Si intentamos cambiar la variable en el código anterior, arrojará un error. Dado que a los métodos y variables static se les asigna memoria solo una vez, cambiar las variables dará un error.

Use la anotación @JvmStatic para lograr la funcionalidad estática en Kotlin

Además de usar objetos companion, también podemos usar la anotación @JvmStatic para lograr una funcionalidad estática. Según la documentación oficial, esta anotación especifica que la JVM debe crear un método estático adicional.

Usar la anotación @JvmStatic es bastante sencillo. Solo necesitamos agregar la anotación antes de la función que queremos que sea estática.

Aquí hay un ejemplo para demostrar lo mismo.

fun main(args: Array<String>) {
    // Accessing static variables and methods without creating objects
    println("Hello!"+'\n' + ExampleClass.staticFunction());
}

object ExampleClass{
    @JvmStatic
    fun staticFunction(): String {
        return "Static Method!"
    }
}

Producción:

Uso de la anotación @JvmStatic para lograr la funcionalidad estática en Kotlin

Haga clic aquí para ver la demostración del código de ejemplo anterior.

Use la función de nivel de paquete para lograr la funcionalidad estática en Kotlin

También podemos lograr una funcionalidad estática en Kotlin declarando el método o la variable como miembro de nivel de paquete. El uso de funciones a nivel de paquete es una forma conveniente de lograr una funcionalidad estática.

Primero debe crear un archivo básico .kt en cualquier paquete y luego definir el método. Una vez definido, puede importar el paquete y llamar al método desde cualquier clase.

Así es como puedes hacerlo.

// create a .kt file first in any package and define the method
package example.app

fun product(x: Int, y: Int){
    return x*y
}

// after defining the method, import the package and call it from any class
import example.app.product

product (3*7)
Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

Artículo relacionado - Kotlin Static