java object转int_【学习笔记-kotlin】kotlion中object关键字的使用

ec1bbcfdbbf2f3d009222008e65159b7.png

1. 伴生对象companion object

伴生对象是相较于一个类而言的,意为伴随某个类的对象,它属于这个类所有,与java中static修饰的一样,全局只有一个单例,声明在类的内部,在类被装载时会被初始化(与static初始化一致)

companion object大括号内包裹了所有静态属性及静态方法,分离更加清晰

data class Person(val name: String, val sex: String) {
    companion object {
        val MALE = "m"
        val FEMALE = "f"

        fun isMale(person: Person): Boolean {
            return MALE == person.sex
        }
    }
}

fun main() {
    val person = Person("lilei", "m")
    val isMale = Person.isMale(person)//true
}

另一个用法,工厂构造设计模式应用

data class Person(val name: String, val sex: String) {
    companion object {
        val MALE = "m"
        val FEMALE = "f"

        fun isMale(person: Person): Boolean {
            return MALE == person.sex
        }

        fun newMale(name: String): Person {
            return Person(name, MALE)
        }

        fun newFemale(name: String): Person {
            return Person(name, FEMALE)
        }
    }
}

2.单例

object HttpConfig {
    var host: String = "https://127.0.0.1"
    var port: Int = 8080
}
//可直接修改
HttpConfig.host="https://192.168.123.1"

3.object表达式

代替java中的匿名内部类

Collections.sort(mutableListOf(1, 5, 7, 2), object : Comparator<Int> {
        override fun compare(o1: Int, o2: Int): Int {
            return o1 - o2;
        }
    })
    //这种情况下idea会提示可转换成lamba表达式,转换后变成以下样式
    Collections.sort(mutableListOf(1, 5, 7, 2)) { o1, o2 -> o1 - o2; }

以上使用看不出特点,直接使用lamba更加方便,其实object表达式还有一个最重要的特点:可以继承类和实现多个接口而lamba表达式只能实现一个接口

所以在需要继承类或者实现多个接口时可以考虑使用object表达式,或者单独定义一个类,其余时候按idea提示转换就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值