需要帮助理解 android.volley.requestQueue 文档示例的语法
Need help understanding syntax of android.volley.requestQueue documentation example
我不明白如何在这个取自 Android documentation
的示例中为 INSTANCE 变量赋值
MySingleton constructor(context: Context) {
companion object {
@Volatile
private var INSTANCE: MySingleton? = null
fun getInstance(context: Context) =
INSTANCE ?: synchronized(this) {
INSTANCE ?: MySingleton(context)
}
}
我理解代码的作用;我只是不明白语法。好像里面应该有等号吧
其实...
It seems like there should be some equal signs in there instead of colons.
你完全正确!这个例子是错误的!它转换为以下 Java 代码:
private static volatile MySingleton INSTANCE;
public static MySingleton getInstance(Context context) {
if(INSTANCE != null) {
return INSTANCE;
} else {
synchronized(this) {
if(INSTANCE != null) {
return INSTANCE;
}
return new MySingleton(context);
}
}
}
正如您所见,INSTANCE 变量实际上从未被设置过。 -_-
应该是:
class MySingleton(context: Context) {
companion object {
@Volatile @JvmField private var INSTANCE: MySingleton? = null
fun getInstance(context: Context) =
INSTANCE ?: synchronized(this) {
INSTANCE ?: MySingleton(context).also { INSTANCE = it }
}
}
}
我不明白如何在这个取自 Android documentation
的示例中为 INSTANCE 变量赋值MySingleton constructor(context: Context) {
companion object {
@Volatile
private var INSTANCE: MySingleton? = null
fun getInstance(context: Context) =
INSTANCE ?: synchronized(this) {
INSTANCE ?: MySingleton(context)
}
}
我理解代码的作用;我只是不明白语法。好像里面应该有等号吧
其实...
It seems like there should be some equal signs in there instead of colons.
你完全正确!这个例子是错误的!它转换为以下 Java 代码:
private static volatile MySingleton INSTANCE;
public static MySingleton getInstance(Context context) {
if(INSTANCE != null) {
return INSTANCE;
} else {
synchronized(this) {
if(INSTANCE != null) {
return INSTANCE;
}
return new MySingleton(context);
}
}
}
正如您所见,INSTANCE 变量实际上从未被设置过。 -_-
应该是:
class MySingleton(context: Context) {
companion object {
@Volatile @JvmField private var INSTANCE: MySingleton? = null
fun getInstance(context: Context) =
INSTANCE ?: synchronized(this) {
INSTANCE ?: MySingleton(context).also { INSTANCE = it }
}
}
}