我刚刚开始使用Kotlin编程语言,这比Java要酷得多。我对静态方法和领域有一些疑问:
Q1:官方文件说
如果将函数注释为@JvmStatic,Kotlin还可以为命名对象或伴生对象中定义的函数生成静态方法。
但是,如果您在下面看到,我可以将bar()方法作为一个静态方法访问,该方法无需使用@JvmStatic注释即可工作。但在官方文件中,它的抛出错误-> 。
Class C{
companion object{
@JvmStatic
fun foo() { }
fun bar();
}
}
fun main(ar
我对kotlin非常陌生,我想知道这是否可能,以及从伴生对象内部访问伴生对象外部的方法和变量是否违反最佳实践。
例如
class A {
fun doStuff(): Boolean = return true
companion object{
public fun stuffDone(): Boolean = return doStuff()
}
}
或者类似的东西
谢谢
我正在阅读Kotlin in Action一书,并试图更好地理解Companion对象,除了从接口/抽象类添加方法实现之外,Companion Ojbects还有其他用途吗?
我遇到了一种实例化对象的方法,该方法只有在类是抽象的情况下才有效:
fun main(args: Array<String>) {
Fruit.showColor()
}
class Fruit(val name: String) {
companion object : Apple()
}
abstract class Apple {
fun showColor(){
我正在尝试调用一个类的静态函数,但是在kotlin中我不能创建一个静态函数,我必须创建一个伴生对象,在这个对象中我必须定义我的函数,但是在这样做的时候我无法访问父类变量,有没有什么方法可以在kotlin中实现这一点。 class One {
val abcList = ArrayList<String>()
companion object {
fun returnString() {
println(abcList[0]) // not able to access abcList here
}
当切换到Kotlin时,静态方法被移到一个伴生对象中。然而,对于调用这些“静态方法”其他方法,没有明显的方法来进行单元测试。
在Java语言中,我们可以使用PowerMockito的MockStatic(SomeClass.class)来验证被测方法中是否调用了静态方法。PowerMock在科特林失去了它的魔力。
为了测试,我创建了以下类。
public class DummyJava {
static public Void staticMechod(){
System.out.print("Dummy method is called");