新闻资讯

新闻资讯 媒体报道

Kotlin中类似Java的static静态方法是什么?

编辑:016     时间:2022-02-21

Kotlin中没有static关键字,也就是没有直接定义静态函数/静态方法的static关键字。那么用Kotlin表示类似JAVA的static静态方法的方式是?

 

最佳回答

将函数放在”companion object”中。

所以像这样的java代码:

class Foo { public static int a() { return 1; }
}

会变成

class Foo { companion object { fun a() : Int = 1 }
}

然后,您可以从Kotlin代码内部使用它,如下所示:

Foo.a();

但是从Java代码中,您需要将其写作

Foo.Companion.a();

(注:上面这个写法在Kotlin中也有效。)

如果您不想指定Companion位,则可以添加@JvmStatic批注或命名您的Companion类。

根据docs

Companion Objects

An object declaration inside a class can be marked with the companion keyword:

class MyClass { companion object Factory { fun create(): MyClass = MyClass()    } }

Members of the companion object can be called by using simply the class name as the qualifier:

val instance = MyClass.create()

However, on the JVM you can have members of companion objects generated as real static methods and fields, if you use the @JvmStatic annotation. See the Java interoperability section for more details.

添加@JvmStatic批注看起来像这样

class Foo { companion object { @JvmStatic fun a() : Int = 1;
  }
}

然后它将作为一个真正的Java静态函数存在,可以从Java和Kotlin中以Foo.a()的形式进行访问。

如果只是不喜欢Companion名称,则还可以为伴随对象提供一个明确的名称,如下所示:

class Foo { companion object Blah { fun a() : Int = 1;
  }
}

它可以让您以相同的方式从Kotlin调用它。在JAVA中可以用Foo.Blah.a()在Java中调用它(这个调用方法在Kotlin中也可以使用)。

 

 

第二种回答

A.旧的Java方式:

  1. 声明companion object以包含静态方法/变量
    class Foo{ companion object { fun foo() = println("Foo") val bar ="bar" }
    }
  2. 调用 :
    Foo.foo() // Outputs Foo  println(Foo.bar) // Outputs bar 

B.新的Kotlin(科特林)方式

  1. 直接在文件上声明,而无需在.kt文件上声明类。
    fun foo() = println("Foo") val bar ="bar" 
  2. 使用methods/variables及其名称。 (导入后)采用 :
    foo() // Outputs Foo  println(bar) // Outputs bar  

Kotlin

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐