kotlin - Kotlin/Java 中的简单转换

标签 kotlin casting

我有一个对象 User 定义如下

class User(){
    var id: Int? = null
    var name: String? = null}

由于某些原因,我必须创建具有相同参数的新对象 User,并且我必须将数据从旧类型复制到新类型。

class UserNew(){
    var id: Int? = null
    var name: String? = null}

我一直在寻找从旧类型转换为新类型的最简单方法。我想做的简单

var user = User()
var userNew = user as UserNew

但显然,我得到了 This cast can never succeed。如果我有一个包含很多参数的 User 对象,那么创建一个新的 UserNew 对象并设置每个参数是不可行的。有什么建议吗?

最佳答案

as 是 kotlin 的强制转换运算符。但是 User 不是 UserNew。因此转换失败。

使用扩展函数在类型之间进行转换:

fun User.toUserNew(): UserNew {
    val userNew = UserNew()
    userNew.id = id
    userNew.name = name
    return userNew
}

然后像这样使用它

fun usingScenario(user: User) {
    val userNew = user.toUserNew()

关于kotlin - Kotlin/Java 中的简单转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52923393/

相关文章:

jenkins - Kotlin在本地计算机上正确编译了项目,但是通过Jenkins抛出异常

c - 有多大的 'int' 可以隐式转换为 'char'?

c++ - 在特定偏移量和类型处重新解释_cast 原始结构的安全方法?

swift - 将 PFObject 指针转换为解析中的子类(swift)

casting - 从原始指针到帽子指针的reinterpret_cast 的引用计数规则是什么?

c++ - 为什么不能将具有返回值的函数赋值给具有 void 的指针函数?

annotations - Kotlin 注释 IntDef

kotlin - 如何将初始化脚本中定义的类导入build.gradle?

android - 包名称与正则表达式不匹配

generics - 在 kotlin 中创建一个具有 Comparable<T> 类型数组的泛型类?