android kotlin对象类型,android – Kotlin中的Singleton类

只是

companion object {

val instance = UtilProject()

}

将完成这项工作,因为伴侣对象本身是一个语言级单身人士.

(首次调用伴随对象时将分配实例.)

– 更新 –

如果需要在启动单例对象时进行调整,可以为每个类创建一个对象.

class UtilProject {

....

companion object {

val instance = UtilProject()

}

}

class AnotherClass {

...

companion object {

val instance = AnotherClass()

const val abc = "ABC"

}

}

fun main(args: Array) {

val a = UtilProject.instance // UtilProject.instance will be initialized here.

val b = AnotherClass.abc // AnotherClass.instance will be initialized here because AnotherClass's companion object is instantiated.

val c = AnotherClass.instance

}

这里,在实际调用AnotherClass.instance之前初始化AnotherClass.instance.它在调用AnotherClass的伴随对象时初始化.

为了防止在需要之前进行初始化,您可以像这样使用:

class UtilProject {

....

companion object {

fun f() = ...

}

}

class AnotherClass {

...

companion object {

const val abc = "ABC"

}

}

object UtilProjectSingleton {

val instance = UtilProject()

}

object AnotherClassSingleton {

val instance = AnotherClass()

}

fun main(args: Array) {

UtilProject.f()

println(AnotherClass.abc)

val a = UtilProjectSingleton.instance // UtilProjectSingleton.instance will be initialized here.

val b = AnotherClassSingleton.instance // AnotherClassSingleton.instance will be initialized here.

val c = UtilProjectSingleton.instance // c is a.

}

如果您不关心每个单例初始化时,您也可以这样使用:

class UtilProject {

....

companion object {

fun f() = ...

}

}

class AnotherClass {

...

companion object {

const val abc = "ABC"

}

}

object Singletons {

val utilProject = UtilProject()

val anotherClass = AnotherClass()

}

fun main(args: Array) {

val a = Singletons.utilProject

val b = Singletons.anotherClass

}

综上所述,

对象或伴侣对象是Kotlin中的一个单独对象.

您可以在一个或多个对象中分配变量,然后像使用单个变量一样使用变量.

对象或伴随对象在首次使用时进行实例化.

当对象首次被实例化时(即,首次使用对象时),初始化对象中的val和vars.

Android使用Kotlin进行Hilt(Hibernate for Android Lifetime Injection)的依赖注入,你需要先添加Hilt库到项目并配置。以下是基本步骤: 1. **添加依赖**: 在`build.gradle`文件的`dependencies`部分,添加Hilt的库: ```groovy implementation 'com.google.dagger:hilt-android:2.40' kapt 'com.google.dagger:hilt-compiler:2.40' ``` 如果你想使用Room数据库的集成,还需要: ```groovy def room_version = "2.4.0" implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" ``` 2. **启用Hilt注解处理器**: 在`gradle.properties`文件添加: ```groovy android.enableDataBinding=true android.enableJetifier=true android.useAndroidX=true dagger.hilt.android.components.ApplicationComponent=kotlin.HiltApplicationComponent::class ``` 3. **创建组件**: 在`@InstallIn(ApplicationComponent::class)`或`@Singleton`注解的应用组件,声明你的应用程序组件,比如`MyApplicationComponent`。 4. **组件扫描**: 使用`@ContributesAndroidInjector`注解标记需要注入的模块,例如: ```kotlin @ContributesAndroidInjector(modules = [DatabaseModule::class]) abstract class MyRepository @Inject constructor(private val dataSource: DataSource) ``` 5. **应用组件在AndroidManifest.xml**: 将生成的`HiltAndroidApp`替换掉默认的`Application`,如`<application ... android:name=".HiltAndroidApp">...</application>`。 6. **依赖注入**: 在需要的地方使用`@Inject`注解接收Hilt提供的实例,它们会在构造函数自动注入。 ```kotlin class MyClass @Inject constructor(private val myService: MyService) { // ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值