static
Kotlin中没有关键字。
static
用Kotlin 表示Java方法的最佳方法是什么?
您将功能放置在“伴侣对象”中。
所以像这样的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
注释或命名伴侣类。
从文档:
类内的对象声明可以用伴随关键字标记:
class MyClass { companion object Factory { fun create(): MyClass = MyClass() } }
可以通过仅使用类名作为限定符来调用伴随对象的成员:
val instance = MyClass.create()
…
但是,在JVM上,如果使用
@JvmStatic
批注,则可以将伴随对象的成员生成为实际的静态方法和字段。有关更多详细信息,请参见Java互操作性部分。
添加@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 like Foo.Blah.a()
(在Kotlin中也可以)调用它。
问题内容: 我将某些本机方法重写为常规Java方法。 本机方法有效地静态吗?或者是否曾经有一个隐式的“ this”参数? 谢谢! 问题答案: 就像常规Java方法一样,本机方法可以是非方法。 非本机方法接收引用,而非本机方法则接收对containg类的引用。 根据JNI规范: 本机方法参数 JNI接口指针是本机方法的第一个参数。JNI接口指针的类型为JNIEnv。第二个参数根据本机方法是静态还是静
问题内容: 我喜欢在这里使用这种方法: 唯一的缺点(例如,与Google Guava相比)是无法静态导入该方法。也就是说,这是没有用的: …因为我的Eclipse编译器在编写时无法正确链接该方法 错误是: Object类型中的equals(Object)方法不适用于参数(…,…) 这是为什么?如果在任何超级类型中都存在具有相同名称(但签名不相同)的方法,我的静态导入方法是否不适用?这是JLS中正式
问题内容: Go中是否有类似java finalize的方法?如果我有一个类似的类型结构 如何确保在垃圾回收对象时关闭文件? 问题答案: iirc。但是它被认为是一件坏事,并且不能保证在程序退出之前就可以运行 编辑:如下所述,当前程序包已在文件上调用。但是,不应该依赖。作为一个示例,我有一个类似文件服务器的应用程序,但我忘记了关闭打开的文件。在GC选取并打开其终结器之前,该过程通常可以获取约300
问题内容: 我有一个带有一些静态成员的类,并且我想运行一些代码来初始化它们(假设此代码无法转换成简单的表达式)。在Java中,我只会 除非我弄错了,否则C ++不允许使用此类静态代码块,对吗?我应该怎么做呢? 我想要以下两个选项的解决方案: 初始化在进程加载时发生(或在加载带有此类的DLL时)。 初始化发生在第一次实例化该类时。 对于第二种选择,我在想: 但这是不可能的,因为C ++(目前?)不允
本文向大家介绍Kotlin实现静态方法,包括了Kotlin实现静态方法的使用技巧和注意事项,需要的朋友参考一下 工具类 全都是静态方法的情况 : class 类名 改为 object 类名 即可 普通静态方法 一部分是静态方法的情况 : 将方法用 companion object { } 包裹即可 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
问题内容: 我在Java中使用以下语句: 请提出等效的C#。 问题答案: 我不知道框架中执行此操作的任何内容,但是实现起来很容易: 或者,如果您要指定计数而不是开始/结束: