原創(chuàng)文章,轉(zhuǎn)載中注明轉(zhuǎn)載地址:http://www.itdecent.cn/p/1fdae52a7d8e
Java單例模式
回顧一下我們在Java中定義一個(gè) “單例” Application
public class AppJava extends Application {
private static AppJava inst;
@Override
public void onCreate() {
super.onCreate();
inst = this;
}
public static AppJava getInst() {
return inst;
}
}
那我們在Kotlin下呢?很簡單,我們開始
Kotlin單例模式
class App : Application() {
companion object {
lateinit var inst: App
private set
}
override fun onCreate() {
super.onCreate()
inst = this
}
}
是不是很簡單,在Kotlin中交互調(diào)用
App.inst方便極了。那個(gè)我們在 Java 中混用試試。用不了!報(bào)錯(cuò)了?
正確的使用方法(增加一個(gè)注解 @JvmStatic ,標(biāo)注我們在Java中是 static 變量):
class App : Application() {
companion object {
@JvmStatic lateinit var inst: App
private set
}
override fun onCreate() {
super.onCreate()
inst = this
}
}
建議
在Android開發(fā)中應(yīng)該盡量避免 static 靜態(tài)變量的使用,濫用容易導(dǎo)致類生命周期變長,很難管理被回收。也更容易導(dǎo)致內(nèi)存泄露