休闲时光 少年正当时

Kotlin日常

使用Lambda表达式

  • Kotlin对所有java的接口进行操作,如果它只含有一个方法,那么就可以用一个lambda表达式替代

Ps:kotlin的接口不行

 val worker = Executors.newCachedThreadPool()
    worker.execute{
        println("hello")
    }

本来需要Runnable command,现在可以直接写一个lambda表达式

data class 实体类

data class User(val name: String,val age:String)

效果等同于java的

public class User {
    private String name;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
....
}

就是这么的神奇

尾递归

  • 什么是尾递归:如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。
  • Kotlin 中的 tailrec 关键字可以对尾递归优化,效果实际是在编译过程中把递归变成迭代的一种优化

单例

  • 第一种
//java 
public class PlainOldSingleton {
    private static PlainOldSingleton INSTANCE = new PlainOldSingleton();

    private PlainOldSingleton() {
        System.out.println("PlainOldSingleton");
    }

    public static PlainOldSingleton getINSTANCE(){
        return INSTANCE;
    }
}
//kotlin
object PlainOldSingleton {
}
  • 第二种
//java
public class LazyNotThreadSafe1 {
    private static  LazyNotThreadSafe1 INSTANCE;
    private LazyNotThreadSafe1(){}
    public static LazyNotThreadSafe1 getINSTANCE(){
        if (INSTANCE == null){
            INSTANCE = new LazyNotThreadSafe1();
        }
        return INSTANCE;
    }
}
//kotlin
class LazyNotThreadSafe{

    companion object {
        val instance by lazy { LazyThreadSafetyMode.NONE }
    }

    //或者
    private var instance2:LazyNotThreadSafe? = null

    fun get():LazyNotThreadSafe{
        if (instance2 == null){
            instance2 =  LazyNotThreadSafe()
        }
        return instance2!!
    }

}

Over 极光掠过天边 却换不回熟悉的那张脸

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容