Tag: kotlin lateinit

如何从Java中隐藏Kotlin的lateinit var backing字段?

在Kotlin,假设我有课: class MyKotlinClass { lateinit var field: String } 根据文档 : 后期初始化属性也暴露为字段。 该字段的可见性将与lateinit属性设置器的可见性相同。 我可以在java代码中使用myKotlinClass.field或myKotlinClass.getField() 。 我想禁用字段访问,并保持只有通过getter和setter访问。 我怎样才能实现这一点,并保持lateinit修饰符?

Kotlin与Spring DI:lateinit属性尚未初始化

我没有在Kotlin中获得基于Spring的setter依赖注入,因为它总是以“lateinit属性API尚未初始化”的错误消息终止。 我可以将问题减少到以下情况:有一个接口 interface IApi { fun retrieveContent(): String } 这是通过 class Api : IApi { override fun retrieveContent() = "Some Content" } 我想在另一个类中使用依赖注入应该发生的实现: @Component class SomeController { @Autowired lateinit var api: IApi fun printReceivedContent() { print(api.retrieveContent()) } } 但是,应用程序终止与上述错误信息。 我的Spring配置如下所示: @Configuration open class DIConfig { @Bean open fun getApiInstance(): IApi = Api() } 在主函数中加载应用程序上下文并调用方法: fun […]

如何在Kotlin中注入原始变量?

我在我的Android应用程序中使用Dagger2作为DI,并使用此代码注入类到我的活动罚款: @field:[Inject ApplicationContext] lateinit var context: Context 但是,在Kotlin的基本类型属性(例如Boolean )中不允许使用lateinit修饰符,我该如何做这样的事情? @field:[Inject Named("isDemo")] lateinit var isDemo: Boolean 当我从这个代码删除lateinit我得到这个错误Dagger does not support injection into private fields

迟到,懒惰和单身模式在kotlin

我试图将我的项目的一部分从java转换到kotlin 。 其中之一是单身经理班。 java类看起来像这样 public class Manager { private static volatile Manager Instance = null; private static final Object InstanceLock = new Object(); private Manager(Object1 object1, Object2 object2, Object3 object3){//…}; public static boolean isInitialized(){ synchronized(InstanceLock){ return Instance == null; } } public static void initialize(Object1 object1, Object2 object2, Object3 object3){ if(Instance == null){ synchronized(InstanceLock){ if(Instance […]