[英]How to call extension object inside companion from another class using kotlin?
[英]Kotlin - any substitute for companion object inside of another object (not class)?
我希望在我的Kotlin Android應用程序中具有具有其內部狀態的靜態定義的單例對象。
據我了解,Kotlin中的object
用於單例,因此我正在嘗試這種方法:
object MySingleton
{
public const val _DEF_DEFINITION_NO_ONE: Byte = 1;
public const val _DEF_DEFINITION_NO_TWO: Byte = 2;
(...)
}
很好,但是問題是,要能夠使用這些定義,現在我必須首先創建Object的實例。
只是想知道我是否能夠在Kotlin中創建這種構造並無需創建MySingleton
實例即可訪問這些定義? 答案將是companion object
工作方式與其他語言中的static
companion object
類似,但不允許在對象內部,而只能在類內部。
當然,我可以保持原樣或將這些定義設為全局,但是想知道是否可以按照我描述的方式進行? 還是應該以其他方式設計這個?
如您所說, MySingleton
是一個object
,因此是一個單例 。 無需創建它的實例(甚至不可能)。 您可以像這樣通過靜態方式簡單地訪問其常量: MySingleton._DEF_DEFINITION_NO_ONE
。
如果要使用常量而不加object
名稱前綴,則只需使用完全限定的名稱導入它們,並按如下所示使用它:
import package.MySingleton._DEF_DEFINITION_NO_ONE
//...
println(_DEF_DEFINITION_NO_ONE)
在Kotlin中有兩種使用靜態數據的方法:
一個object
object ASingleton {
val CONSTANT_PROPERTY: Int = 1;
}
如果您需要單個實例類,而每個實例類的每個屬性只有一個狀態,請使用單例。 注意:此類只能有一個實例,並且由編譯器為您創建。
具有companion object
類
class ClassWithCompanionObject{
val someProperty: Int = 0; // instance bound
companion object {
val CONSTANT_PROPERTY: Int = 1;
}
}
如果您需要一些靜態屬性,而其余的屬性應具有綁定到特定實例的狀態,請使用帶有companion object
的類。
用法:
println(ASingleton.CONSTANT_PROPERTY)
println(ClassWithCompanionObject.CONSTANT_PROPERTY)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.