草庐IT

Kotlin-script

全部标签

json - 如何序列化/反序列化 Kotlin 密封类?

我有以下密封类:sealedclassViewModel{dataclassLoaded(valvalue:String):ViewModel()objectLoading:ViewModel()}我如何序列化/反序列化ViewModel类的实例,比如JSON格式?我尝试使用Genson序列化器/反序列化器库-它可以处理Kotlin数据类,还可以支持多态类型(例如,使用一些元数据来指定具体类型)。但是,库在Kotlinobject类型上失败,因为这些是没有公共(public)构造函数的单例。我想我可以编写一个自定义的Genson转换器来处理它,但也许有更简单的方法来做到这一点?

android - 为什么懒惰的kotlin会导致android中的内存泄漏?

我这样定义一个加载对话框privatevalloadingDialog:LoadingDialogbylazy{LoadingDialog()}loadingDialog是一个DialogFragment当我使用leakcanary观看我的应用程序时,我发现loadingDialog导致内存有人可以帮帮我吗? 最佳答案 当您定义一个val委托(delegate)bylazy{...}时,传递给委托(delegate)的lambda会将范围捕获到其闭包中(尽管它只是外部this在你的情况下,它可能是一个Activity实例)。然后委托

android - 为什么懒惰的kotlin会导致android中的内存泄漏?

我这样定义一个加载对话框privatevalloadingDialog:LoadingDialogbylazy{LoadingDialog()}loadingDialog是一个DialogFragment当我使用leakcanary观看我的应用程序时,我发现loadingDialog导致内存有人可以帮帮我吗? 最佳答案 当您定义一个val委托(delegate)bylazy{...}时,传递给委托(delegate)的lambda会将范围捕获到其闭包中(尽管它只是外部this在你的情况下,它可能是一个Activity实例)。然后委托

kotlin - 通过辅助构造函数初始化 Kotlin 数据类的 val 属性

classAnimal{valname:Stringconstructor(name:String){this.name=name//initializedviaconstructor}}对于Kotlin中的上述类,我可以通过辅助构造函数初始化val属性,但对于数据类dataclassUser(valname:String,valpostalCode:Int){valemail:Stringconstructor(email:String):this("",1){this.email=email//error:valuecannotbereassigned}}我无法理解的是,电子邮件属

kotlin - 通过辅助构造函数初始化 Kotlin 数据类的 val 属性

classAnimal{valname:Stringconstructor(name:String){this.name=name//initializedviaconstructor}}对于Kotlin中的上述类,我可以通过辅助构造函数初始化val属性,但对于数据类dataclassUser(valname:String,valpostalCode:Int){valemail:Stringconstructor(email:String):this("",1){this.email=email//error:valuecannotbereassigned}}我无法理解的是,电子邮件属

android - 匿名 Kotlin 监听器中未解析的引用

我有下面的代码。它是Kotlin。知道为什么来自textToSpeech.setLanguage(Locale.UK)的textToSpeech告诉我们没有为textToSpeech解析引用吗?valtextToSpeech=TextToSpeech(applicationContext,object:TextToSpeech.OnInitListener{overridefunonInit(status:Int){if(status==TextToSpeech.SUCCESS){textToSpeech.setLanguage(Locale.UK)}}})一开始我以为是ideakot

android - 匿名 Kotlin 监听器中未解析的引用

我有下面的代码。它是Kotlin。知道为什么来自textToSpeech.setLanguage(Locale.UK)的textToSpeech告诉我们没有为textToSpeech解析引用吗?valtextToSpeech=TextToSpeech(applicationContext,object:TextToSpeech.OnInitListener{overridefunonInit(status:Int){if(status==TextToSpeech.SUCCESS){textToSpeech.setLanguage(Locale.UK)}}})一开始我以为是ideakot

field - Kotlin - 如何从接口(interface)覆盖 "lateinit"var?

我有一个名为UserManager的界面interfaceUserManager{varuser:User/*...*/}还有一个名为UserManagerImpl的类,它实现了UserManagerclassUserManagerImpl:UserManager{overridevaruser:User//=mustprovideanUserobject/*...*/}这是我的问题:如何允许另一个类随时在UserManager()中设置User(即不提供初始User对象与属性声明并让另一个类创建并提供User实例)?算一算接口(interface)不能有lateinit属性我希望Us

field - Kotlin - 如何从接口(interface)覆盖 "lateinit"var?

我有一个名为UserManager的界面interfaceUserManager{varuser:User/*...*/}还有一个名为UserManagerImpl的类,它实现了UserManagerclassUserManagerImpl:UserManager{overridevaruser:User//=mustprovideanUserobject/*...*/}这是我的问题:如何允许另一个类随时在UserManager()中设置User(即不提供初始User对象与属性声明并让另一个类创建并提供User实例)?算一算接口(interface)不能有lateinit属性我希望Us

transactions - 如何在 Kotlin 中更轻松地使用 Jooq 事务

我有使用事务在Kotlin中编写的Jooq代码,有时我希望一个方法可以作为一个拥有自己事务的顶级操作独立工作,而其他时候希望它与相同的交易。例如,我有两个较低级别的函数actionAbc和actionXyz我想将它们组合成不同的高级数据方法并继承它们的事务(如果存在),否则有自己的。我知道在Spring或其他框架中可以添加注释来验证“需要事务”或“如果没有则创建事务”类型的功能。但是我如何在不使用这些库的情况下对Jooq+Kotlin做同样的事情呢?我想出的最接近的方法是将事务作为可选参数传入,如果丢失,则将其默认为新事务。但是如果有人忘记传递事务,那么使用新的顶级且不相关的事务会出现