你真的了解Kotlin吗?

基本数据类型

var int = 0B0000_0011
var double = 9.9
var float = 9.8f
val intArray: Array<Int> = arrayOf(1, 1, 2) // it.javaClass.name equals [Ljava.lang.Integer;
val stringArray: Array<String> = arrayOf("A", "B") // [Ljava.lang.String;

入表达式

class Test {
    @Test fun test() {
        val fn = { a: Int, b: String ->
            println("a=$a, b=$b");      //  <------- Kotlin也有必须使用分号的时候
            { c: Unit ->
                println(c)
            }
        }
        fn(88, "Hello")(Unit)
    }
}

lateinit - 延迟初始化

@Service
@ComponentScan(basePackageClasses = [App::class])
class App {
    @Autowired
    lateinit var dbService: DBServ

    fun run() {
        println("Hello, Spring, ${this.dbService}")
    }
}

SAM - 单一抽象方法

针对Java中单一抽象方法的接口,例如Runnable,可以使用以下形式实现:

  1. 匿名对象(适用于Java和Kotlin接口)
object : Runnable {
  override fun run() {
    // TODO
  }
}
  1. 入表达式(仅Java接口可用)
Runnable {
  // TODO
}

值对象

只有数据没有其他代码的类称为值对象,和数据类的区别?—— 数据类不能是抽象、开放、密封或者内部的。
see https://hackmd.io/@MonsterLee/HJyAdgRBB

class Person(val name: String)

END

posted @ 2021-03-02 16:45  develon  阅读(79)  评论(0编辑  收藏  举报