你真的了解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,可以使用以下形式实现:
- 匿名对象(适用于Java和Kotlin接口)
object : Runnable {
override fun run() {
// TODO
}
}
- 入表达式(仅Java接口可用)
Runnable {
// TODO
}
值对象
只有数据没有其他代码的类称为值对象,和数据类的区别?—— 数据类不能是抽象、开放、密封或者内部的。
see https://hackmd.io/@MonsterLee/HJyAdgRBB
class Person(val name: String)