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 极光掠过天边 却换不回熟悉的那张脸