Kotlin 中的 Java 静态方法等价物是什么?

在 Java 中,“static”关键字用于高效的内存管理。一旦变量或方法被声明为static,那么 JVM 将只为这些变量分配一次内存。通常静态变量用于声明一个类的公共属性,例如“机构名称”。在下面的示例中,我们将看到如何使用static关键字。

使用 Java 的静态示例

为了演示静态在 Java 中的工作原理,我们将访问我们的在线 Java 编译器并创建一个测试类。在Test内部,我们将尝试创建一个静态变量和一个静态方法,我们将访问它们而不创建任何类对象。

示例

public class Test

{

   static int myStaticVariable = 10;

   //静态方法

   static void staticMethod()

   {

      System.out.println("www.nhooo.com");

   }

   public static void main(String[] args)

   {

      //在不创建的情况下访问静态方法和变量

      //Test 类的任何对象

      staticMethod();

      System.out.println("Accessing Static variable-"+myStaticVariable);

   }

}

输出结果

执行代码后,它将生成以下输出 -

$javac Test.java

$java -Xmx128M -Xms16M Test

www.nhooo.com

Accessing Static variable-10

Kotlin 中 Java 静态方法的等价物

在 Kotlin 中,我们没有static关键字。在本文中,我们将学习如何使用 Kotlin 库中可用的不同关键字来实现相同的内存管理。目标是实现一个不同的 Kotlin 库函数来选择一个条件,即只创建一次内存并且它的值不能从应用程序的其他部分修改。

在 Kotlin中有两种使用静态的方法 -

  • 使用伴随对象

  • 使用对象类和@JvmStatic 注解

让我们详细了解这些方式。

使用伴随对象

在对象中添加伴侣将有助于开发人员在 Kotlin中实现静态功能。它将对象存储在存储类的同一文件中,因此它可以访问类中的所有私有方法和变量。它与类初始化阶段一起被初始化。

示例

我们将尝试实现一个伴生对象,我们将看到在 Kotlin 中处理内存管理的效率有多高。

fun main(args: Array<String>) {

   //访问类变量和方法

   //没有创建类对象

   println("Hello!"+'\n' + "This an example of accessing class variable without creating object." + MyClass.staticField+'\n')

   println("Hello!"+'\n' + "This an example of accessing class Method without creating an object." + MyClass.getStaticFunction()+'\n');

}

class MyClass{

   companion object {

      val staticField = "这是一个静态变量。"

      fun getStaticFunction(): String {

         return "这是一个静态方法。"

      }

   }

}

输出结果

执行代码后,它将生成以下输出 -

Hello!

This an example of accessing class variable without creating

object. 这是一个静态变量。

Hello!

This an example of accessing class Method without creating an

object. 这是一个静态方法。

在此示例代码中,如果您尝试修改任何静态变量的值,您将看到 Kotlin 编译器会抛出错误。

示例

fun main(args: Array) {

   //试图修改静态变量

   MyClass.staticField="Hello Students";

   println("Hello!"+'\n'+"This an example of accessing class variable with out creating object-"+MyClass.staticField+'\n')

}

class MyClass{

   companion object {

      val staticField = "This is an Static Variable"

      fun getStaticFunction(): String {

         return "This is a static Method"

      }

   }

}

输出结果

上面的代码将产生以下错误 -

$kotlinc -nowarnmain.kt-include-runtime -d main.jar

main.kt:5:5: error: val cannot be reassigned

MyClass.staticField="Hello Students";

^

使用对象类和@JvmStatic 注解

根据 Kotlin 文档,一旦将 @JvmStatic注释应用于任何变量或方法,它将作为该类的静态功能工作。

示例

在下面的示例中,我们将创建一个对象类,在该对象类中,我们将使用@JvmStatic注解声明变量和方法,以便在 Kotlin 环境中实现静态功能。

fun main(args: Array) {

   //访问类变量和方法

   //没有创建类对象

   println("Hello!"+'\n' + "This an example of accessing a class variable without creating an object." +MyClass.staticField+'\n')

   println("Hello!"+'\n' + "This an example of accessing a class Method without creating an object. " +MyClass.getStaticFunction()+'\n');

}

object MyClass{

   @JvmStatic

   val staticField = "这是一个静态变量。"

   @JvmStatic

   fun getStaticFunction(): String {

      return "这是一个静态方法。"

   }

}

输出结果

它将在结果部分生成以下输出。-

Hello!

This an example of accessing a class variable without creating an

object. 这是一个静态变量。

Hello!

This an example of accessing a class Method without creating an

object. 这是一个静态方法。

以上是 Kotlin 中的 Java 静态方法等价物是什么? 的全部内容, 来源链接: utcz.com/z/297061.html

回到顶部