gpt4 book ai didi

java - 从 java 扩展时,静态函数在 kotlin 中不可见

转载 作者:行者123 更新时间:2023-11-30 10:01:46 26 4
gpt4 key购买 nike

我在一个 Android 项目中将 Kotlin 和 Java 一起编写,我有一个抽象的 Java BaseApplication 类,它有一些静态方法,我的每种风格的应用程序类都扩展了这个 BaseApplication 类(称为 App.kt)并且是用 Kotlin 编写的.我想知道为什么我不能通过 Kotlin 代码中的 App 类访问 BaseApplication 静态函数


public abstract class BaseApplication extends Application {
public static void staticFunction(){
Log.d("TAG", "some log...");
}
}
public class App : BaseApplication() {
fun doSomething(){
Log.w("TAG", "doing something")
}

我可以从 Java 类调用 App.staticFunction() 但我不能从 Kotlin 类调用它。难道我做错了什么?为什么我不能调用 App.staticFunction() ?有什么不同?

我可以从 java 做到这一点:

public class JavaTest {
public void main(String[] args) {
App.staticFunction();
}
}

但是这个(kotlin)给我编译错误:

class KotlinTest {
fun main(args: Array<String>) {
App.staticFunction() //unresolved reference: static function
}
}

(我知道我可以通过AbstractApplication访问staticFunction,我只是想知道为什么我不能通过App类访问它?)

最佳答案

来自Kotlin documentation on Java interop :

Static members of Java classes form "companion objects" for these classes. We cannot pass such a "companion object" around as a value, but can access the members explicitly ...

您的 App 类是 Kotlin 类,对静态方法一无所知。但是,应该有一个为 BaseApplication Java 类上的静态方法创建的伴生对象。所以你应该能够调用静态方法

BaseApplication.staticFunction()

关于java - 从 java 扩展时,静态函数在 kotlin 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57272465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com