在Kotlin中没有静态关键字。
在Kotlin中表示静态Java方法的最佳方法是什么?
在Kotlin中没有静态关键字。
在Kotlin中表示静态Java方法的最佳方法是什么?
当前回答
对于Java:
public class Constants {
public static final long MAX_CLICK_INTERVAL = 1000;}
等价的Kotlin代码:
object Constants {
const val MAX_CLICK_INTERVAL: Long = 1000}
因此,等价于Java静态方法的是Kotlin中的对象类。
其他回答
让,你有一个班级学生。你有一个静态方法getUniversityName()和一个静态字段totalStudent。
你应该在你的类中声明同伴对象块。
companion object {
// define static method & field here.
}
然后你的类看起来像
class Student(var name: String, var city: String, var rollNumber: Double = 0.0) {
// use companion object structure
companion object {
// below method will work as static method
fun getUniversityName(): String = "MBSTU"
// below field will work as static field
var totalStudent = 30
}
}
然后你可以像这样使用那些静态方法和字段。
println("University : " + Student.getUniversityName() + ", Total Student: " + Student.totalStudent)
// Output:
// University : MBSTU, Total Student: 30
kotlin文档提供了三种方法, 第一个是在包中定义函数,没有类:
package com.example
fun f() = 1
第二个是使用@JvmStatic注释:
package com.example
class A{
@JvmStatic
fun f() = 1
}
第三个是使用伴侣对象
package com.example
clss A{
companion object{
fun f() = 1
}
}
您只需要创建一个伴生对象并将函数放入其中
class UtilClass {
companion object {
// @JvmStatic
fun repeatIt5Times(str: String): String = str.repeat(5)
}
}
从kotlin类中调用该方法:
class KotlinClass{
fun main(args : Array<String>) {
UtilClass.repeatIt5Times("Hello")
}
}
或使用import
import Packagename.UtilClass.Companion.repeatIt5Times
class KotlinClass{
fun main(args : Array<String>) {
repeatIt5Times("Hello")
}
}
从java类中调用该方法:
class JavaClass{
public static void main(String [] args){
UtilClass.Companion.repeatIt5Times("Hello");
}
}
或者在方法中添加@JvmStatic注释
class JavaClass{
public static void main(String [] args){
UtilClass.repeatIt5Times("Hello")
}
}
或者在方法中添加@JvmStatic注释并在java中进行静态导入
import static Packagename.UtilClass.repeatIt5Times
class JavaClass{
public static void main(String [] args){
repeatIt5Times("Hello")
}
}
object objectName {
fun funName() {
}
}
有两种方法可以在Kotlin中应用静态
首先在类下创建一个伴生对象
为例:
class Test{
companion object{
fun isCheck(a:Int):Boolean{
if(a==0) true else false
}
}
}
你可以称这个函数为
Test.Companion.isCheck(2)
另一种方法是创建一个对象类
object Test{
fun isCheck(a:Int):Boolean{
if(a==0) true else false
}
}
编码快乐!