Solarex's Blog

我只想过,平平淡淡的生活,欲望啊,请放过脆弱的我

Java AQS解析

| Comments

AbstractQueuedSynchronizer是很多并发工具类如ReentrantLock的实现基础,本文对其进行分析。

Kotlin是如何实现方法默认参数的

| Comments

学习Kotlin的时候,发现可以给方法设置默认参数,Java是不支持给方法设置默认参数的,那Kotin是如何实现的呢?不妨看下下面的kotlin文件,kotlin允许这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
class frob() {
    fun fred(x: Int = 300, y: frob = mkfrob(x)) {
        println("${this}${x}${y}")
    }
    fun mkfrob(x: Int): frob {
        return this;
    }
    fun boobar() {
        fred();
        fred(100);
        fred(100, frob());
    }
}

使用kotlinc编译成class文件之后,我们使用cfr反编译一下class文件看下编译器帮我们做了什么黑魔法。