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.jarmain.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