Kotlin 中没有 static
关键字。
在 Kotlin 中表示 static
Java 方法的最佳方式是什么?
原文由 pdeva 发布,翻译遵循 CC BY-SA 4.0 许可协议
文档 建议用 包级函数 解决大部分静态函数的需求。它们只是在源代码文件的类之外声明。文件的包可以在文件的开头用 package 关键字指定。
宣言
package foo
fun bar() = {}
用法
import foo.bar
或者
import foo.*
您现在可以调用该函数:
bar()
或者如果您不使用 import 关键字:
foo.bar()
如果您不指定包,则可以从根目录访问该函数。
如果您只有 java 经验,这可能看起来有点奇怪。原因是 kotlin 不是严格面向对象的语言。你可以说它支持类外的方法。
编辑:他们已经编辑了文档,不再包含关于推荐包级功能的句子。 这 是上面提到的原件。
原文由 Henrik F. 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
您将函数放在“伴侣对象”中。
所以java代码是这样的:
会变成
然后,您可以在 Kotlin 代码中将其用作
但是在 Java 代码中,您需要将其称为
(这也适用于 Kotlin。)
如果您不喜欢指定
Companion
位,您可以添加@JvmStatic
注释或命名您的同伴类。从 文档:
class Foo { companion object Blah { fun a() : Int = 1; } }
”`
这将让您以相同的方式从 Kotlin 调用它,但可以从 java 中调用它,例如
Foo.Blah.a()
(在 Kotlin 中也可以使用)。