我正在使用Kotlin编写Util类,并采用不同的方法。我正在尝试一种既适用于Kotlin也适用于Java的最佳调用方式。
现在我已经创建了许多类型的Util,但我很困惑应该选择哪个并且最重要的是为什么?我正在寻找考虑堆、内存和性能的最佳方法。
我的问题可能对你们来说看起来很愚蠢,但我自己陷入了迷宫无法得出解决方案。
这是我的游乐场。
我创建了5个Kotlin文件,在其中放置了foo()方法,并尝试通过Kotlin和Java进行调用。
引用Bar.kt类的调用如下:
调用类 Qux.java。
现在我已经创建了许多类型的Util,但我很困惑应该选择哪个并且最重要的是为什么?我正在寻找考虑堆、内存和性能的最佳方法。
我的问题可能对你们来说看起来很愚蠢,但我自己陷入了迷宫无法得出解决方案。
这是我的游乐场。
我创建了5个Kotlin文件,在其中放置了foo()方法,并尝试通过Kotlin和Java进行调用。
引用Bar.kt类的调用如下:
class Bar {
fun bazz() {
UtilClass.instance.foo()
UtilClassObject.UtilClassObject.foo()
UtilCompanionObject.foo()
UtilFileObject.foo()
foo() // from UtilFile
}
}
调用类 Qux.java。
public class Qux {
public void bazz() {
UtilClass.Companion.getInstance().foo();
UtilClassObject.UtilClassObject.INSTANCE.foo();
UtilFileKt.foo();
UtilFileObject.INSTANCE.foo();
UtilCompanionObject.Companion.foo();
}
}
这里是让我感到困惑、无法选择最佳选项的迷宫。
UtilClass.kt
class UtilClass {
fun foo() { ... }
companion object {
val instance = UtilClass()
}
}
UtilClassObject.kt
class UtilClassObject {
object UtilClassObject {
fun foo() { ... }
}
}
UtilCompanionObject.kt
class UtilCompanionObject {
companion object {
fun foo() { ... }
}
}
UtilFile.kt
fun foo(){ ... }
UtilFileObject.kt
object UtilFileObject {
fun foo() { ... }
}
可能需要一些时间来回答我的问题并且解释得很好。所以我非常感谢您的努力。
Util.getInstance().foo()
或者有时使用静态方法的Util.foo()
。现在我只想知道这些中最好的方法。我很好奇所有上述类型之间的区别,考虑到堆内存,哪种方法最好。 - Khemraj SharmaUtilFile.kt
中提到的那样创建全局方法最容易。但是将成千上万的方法置于全局范围内是否是好的做法呢? - Khemraj Sharma