【问题标题】:Any data type not working in data class kotlin任何在数据类 kotlin 中不起作用的数据类型
【发布时间】:2019-06-25 08:16:54
【问题描述】:

我刚开始学习 kotlin。

这是我的数据类。

data class UserModel(

    @SerializedName("Id")
    val id: Int = 0,

    @SerializedName("myKey")
    val myKey: Boolean? = false
    //var myKey: Any?

虽然我使用简单的val myKey: Boolean? = false,但我的应用程序正在运行并且能够运行。但是当我使用var myKey: Any? 并运行应用程序时,它给了我编译错误。我已经通过评论每一行的代码来检查。我发现问题是因为这个var myKey: Any?

非常好心,如果有人知道这件事。高级帮助将不胜感激!

【问题讨论】:

  • 您确定这不仅仅是因为您有重复的myKey 属性名称?
  • 是的,先生,我确定.. 我也应用了不同的变量名
  • 当你将它分配给false 作为默认为什么你需要空安全?
  • 对我来说编译得很好。您收到编译错误还是运行时错误?
  • 编译时间先生。 原因:org.gradle.api.GradleException:编译错误。有关更多详细信息,请参阅日志... org.gradle.api.tasks.TaskExecutionException:任务':app:compileDebugKotlin'的执行失败。在

标签: android kotlin data-class


【解决方案1】:

尝试

@SerializedName("myKey")
val myKey: Boolean? = false

进入

@SerializedName("myKey")
val myKey: any? = false

示例:

data class UserModel(

    @SerializedName("Id")
    val id: Int = 0,


    @SerializedName("myKey")
    val myKey: any? = false

)

确保在访问数据类时进行一些类型检查和强制转换,例如

val userModel = UserModel()
when(userModel.myKey){
    is Boolean -> {
        // do stuff when myKey type of Boolean
        if(userModel.myKey) println("key is false")
        else println("key is true")
    }
    is String -> {
        // do stuff when myKey type of String
        println(userModel.myKey)
    }
}

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2017-07-11
    • 2012-04-16
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多