美文网首页
Kotlin创建有参的对象

Kotlin创建有参的对象

作者: 因为我的心 | 来源:发表于2021-10-13 14:05 被阅读0次

一、前言:

Kotlin当没有创建构造器时,与Java类似的是,与Java类似的就是当没有显示提供主函数时,Kotlin会为其生成一个无参构造。

二、对象创建几种方式的集合:

/**
 * 方式1:
 */
data class RewardBean constructor(var index:Int?,var rewardId:String?) {}


/**
 * 方式2:
 */
data class RewardBean(var index:Int?,var rewardId:String?) {
    constructor() : this(null, null)
}

/**
 * 方式3:
 * 直接在构造器中定义类的属性
 */
class RewardBean(var index: Int, var rewardId: String) {}

/**
 * 方式4:
 *  初始化语句不是必须放在init代码块中的,也可以定义属性的时候初始化
 */
class RewardBean(index: Int, rewardId: String) {
     var index: Int = index
     val rewardId: String = rewardId
}


/**
 * 方式5:
 * 次构造函数,与主构造函数的区别就是,次构造函数定义在类中,可以有多个,但是主构造函数只会有一个
 */
class RewardBean {
    val index: Int
    val rewardId: String

    constructor(index: Int, rewardId: String) {
        this.rewardId = rewardId
        this.index = index
    }
}


/** 方式6:
 * 构造器 constructor Kotlin中有一个主构造函数和多个二级构造函数
 * 主构造函数是类头的一部分,跟在类名后面
 * 在Java中,构造方法必须和类名相同,而在Kotlin中,是通过constructor关键字来标明的
 */
class RewardBean constructor(index: Int, rewardId: String) {
    val index: Int
    val rewardId: String
    //在Kotlin中使用init初始化代码块,它的作用是为了主构造函数服务的,由于主构造函数是放在类首部的,是不能包含任何初始化执行语句的,这是语法规定的,那么这个时候就有了init的用武之地,
    // 我们可以把初始化执行语句放置在此处,为属性进行赋值
    init {
        this.rewardId = rewardId
        this.index = index
    }
}

/**
 * 方式7:
 * 可将constructor关键字去掉
 */
class RewardBean(index: Int, rewardId: String) {
    val index: Int
    val rewardId: String

    init {
        this.rewardId = rewardId
        this.index = index
    }
}


/**
 * 方式8:
 * 无构造
 */
class RewardBean{
    var index = 0
    var rewardId =""
}

三、测试使用:

 var list = mutableListOf<RewardBean>()
            list.add(RewardBean(1,"11111"))
            list.add(RewardBean(2,"22222"))
            list.add(RewardBean(3,"33333"))
            list.add(RewardBean(4,"44444"))

list.forEach {
   Log.d("LUO", "当前id:${it.index}=====广告:${it.rewardId}")
}

相关文章

网友评论

      本文标题:Kotlin创建有参的对象

      本文链接:https://www.haomeiwen.com/subject/ihosoltx.html