如何在kotlin中“静态”访问类的成员?
在Java和Android中,我们可以这样做:
public static MyApplication extends Application { private static Context appContext; public void onCreate() { appContext = this; } public static Context getAppContext() { return appContext; } }
所以,在其他地方,我们可以这样做:
appContext = MyApplication.getAppContext();
我们如何在Kotlin中做到这一点? 过去一个多小时,我一直在绕圈子。
提前致谢。
//编辑也许我应该更清楚了。 我的意思是我们怎样才能在Kotlin中写出上面的内容,并在Kotlin中使用它。
在科特林,这被称为“伴侣对象”:
class MyApplication: Application { companion object { var appContext: Context? = null private set } }
我所缺少的关键元素是使用init块来设置伴随对象(我已经尝试过伴侣对象路径,但努力实际上获取appContext集)内的appContext。
见下面的代码:
class MyApplication : Application() { init { appContext = this } companion object { lateinit var appContext: Context private set } }
然后通过以下方式调用它:
val testContext = MyApplication.appContext
假设你在android中有一些java
代码,你想把它转换成kotlin
代码:
- 访问链接
- 找到
Convert from java
它是帮助我转换我在互联网上找到的java
代码,并将其转换为kotlin
代码,
可能这个
answer
不能帮助你解决你的问题,但它会帮助你转换你在java
中知道的你不知道如何在kotlin
你可以这样使用它
companion object{ //your static fields }
从kotlin ==> ClassName.FieldName调用它
从java调用它==> ClassName.Companion.getFieldName()
好像你只想在运行时这个类的一个对象。 这被称为单身人士 。 有一些建议可以在Java中正确实现。 幸运的是,Kotlin直接允许你在顶部范围声明单例对象:
val o = object { your attributes and methods here}
- 安装kotlin后无法打开Android studio项目
- 如果安装了JaCoCo,Kotlin导入包级别的“val”对象将从Android库模块中失败
- Android的秒表应用程序崩溃
- 将RxJava代码正确转换为Kotlin
- 错误:com.app.android.dagger.component.AppComponent(unscoped)可能不引用作用域绑定:
- 在Kotlin Android中出现错误“未解决的参考”
- 在ContentResolver中使用kotlin会导致IllegalArgumentException
- MutableLiveData与Kotlin多重打样器通用不工作
- 在Kotlin的自定义类中访问TextView