2020-09-30

2020-10-12  本文已影响0人  海东青_fb7a
a?.b
if (a != null){
    return a.b()
}else{
    return null
}
a?:b
if (a != null){
    return a
}else{
    return b
}
a!!
if (a != null){
    return a
}else{
    Throw Exception
}
companion object {

        private var INSTANCE: Repository? = null

        val instance: Repository
            get() {
                if (INSTANCE == null) {
                    synchronized(Repository::class.java) {
                        if (INSTANCE == null) {
                            INSTANCE = Repository()
                        }
                    }
                }
                return INSTANCE
            }
    }
}
@JvmOverloads fun f(a: String, b: Int=0, c:String="abc"){
}

相当于

void f(String a)
void f(String a, int b)
void f(String a, int b, String c)
class Repository private constructor() {
    ...
    init {

        val user1 = User("Jane", "")
        val user2 = User("John", null)
        val user3 = User("Anne", "Doe")

        users = ArrayList()
        users!!.add(user1)
        users.add(user2)
        users.add(user3)
    }

}
inline fun <T> check(lock: Lock, body: () -> T): T {
        lock.lock()
        try {
            return body()
        } finally {
            lock.unlock()
        }
    }

然后我们再调用 check 方法,编译器就会在编译期帮我们进行优化:
将我们写的代码 check(lock, {"我是lambda方法体"})
换成

  lock.lock()
        try {
            return "我是lambda方法体"
        } finally {
            l.unlock()
        }

提升了性能,而且增加的代码量是在编译期执行的,对程序可读性不会造成影响。

上一篇下一篇

猜你喜欢

热点阅读