本文共 5264 字,大约阅读时间需要 17 分钟。
Kotlin 中的 HelloWorld 示例,展示了类和成员函数的基本使用方法。
class Greeter(val name: String) { fun greet() { println("Hello, $name") }}fun main(args: Array ) { Greeter(args[0]).greet()} 通过分解对应式声明,简洁地创建多个变量。
fun main(args: Array) { val pair = Pair(1, "one") val (num, name) = pair println("num = $num, name = $name") val triple = Triple(10, "B", 10.0) val (a, b, c) = triple println("a=$a, b=$b, c=$c")}data class Pair ( val first: K, val second: V) { operator fun component1(): K = first operator fun component2(): V = second}data class Triple ( val first: K, val second: V, val third: T) { operator fun component1(): K = first operator fun component2(): V = second operator fun component3(): T = third}
数据类自动推导标准功能,适合仅用于存储数据的类。
data class User( val name: String, val id: Int) { override fun toString(): String { return "User(name=$name, id=$id)" }}fun getUser(): User { return User("Alex", 1)}fun main(args: Array ) { val user = getUser() println("name = ${user.name}, id = ${user.id}")} 定义接口并实现其方法,保证代码的可扩展性。
interface Clickable { fun click()}class Button : Clickable { override fun click() { println("I was clicked") }}fun main(args: Array ) { Button().click()} 创建实体类,包含必要的字段和 getter/setter 方法。
package jason.chen.mini_springboot.restful.entityimport java.util.*import javax.persistence.*@Entityclass Customer( val firstName: String, val lastName: String, val gmtCreated: Date, val gmtModified: Date, val isDeleted: Int, val deletedDate: Date, @Id @GeneratedValue(strategy = GenerationType.AUTO) val id: Long = -1) { override fun toString(): String { return "Customer(firstName=$firstName, lastName=$lastName, gmtCreated=$gmtCreated, gmtModified=$gmtModified, isDeleted=$isDeleted, deletedDate=$deletedDate, id=$id)" }}data class Shop( val name: String, val customers: List )data class Customer( val name: String, val city: City, val orders: List ) { override fun toString(): String { return "$name from ${city.name}" }}data class Order( val products: List , val isDelivered: Boolean)data class Product( val name: String, val price: Double) { override fun toString(): String { return "'$name' for $price" }}data class City( val name: String) { override fun toString(): String { return name }} 创建一个矩形对象,包含高度和宽度属性。
package geometry.shapesclass Rectangle( val height: Int, val width: Int) { val isSquare: Boolean get() = height == width fun createRandomRectangle(): Rectangle { val random = Random() return Rectangle( random.nextInt(), random.nextInt() ) }} 创建一个日期工具类,提供丰富的日期操作功能。
package jason.chen.mini_springboot.restful.utilsimport java.text.SimpleDateFormatimport java.util.*enum class DateOptUnit { YEAR, MONTH, DATE}data class DateOperator( val unit: DateOptUnit, val value: Int)fun Any.year(value: Int): DateOperator { return DateOperator(DateOptUnit.YEAR, value)}fun Any.month(value: Int): DateOperator { return DateOperator(DateOptUnit.MONTH, value)}fun Any.day(value: Int): DateOperator { return DateOperator(DateOptUnit.DATE, value)}operator fun Date.plus(nextVal: Int): Date { val calendar = GregorianCalendar() calendar.time = this calendar.add(Calendar.DATE, nextVal) return calendar.time}operator fun Date.minus(nextVal: Int): Date { val calendar = GregorianCalendar() calendar.time = this calendar.add(Calendar.DATE, nextVal * -1) return calendar.time}operator fun Date.plus(nextVal: DateOperator): Date { val calendar = GregorianCalendar() calendar.time = this calendar.add( nextVal.unit.parseType(), nextVal.value ) return calendar.time}operator fun Date.minus(nextVal: DateOperator): Date { val calendar = GregorianCalendar() calendar.time = this calendar.add( nextVal.unit.parseType(), nextVal.value * -1 ) return calendar.time}operator fun Date.inc(): Date { val calendar = GregorianCalendar() calendar.time = this calendar.add(Calendar.MONTH, 1) calendar.set(Calendar.DAY_OF_MONTH, 0) return calendar.time}operator fun Date.dec(): Date { val calendar = GregorianCalendar() calendar.time = this calendar.set(Calendar.DAY_OF_MONTH, 1) return calendar.time}operator fun Date.get(position: Int): Int { val calendar = GregorianCalendar() calendar.time = this var value = 0 when (position) { 0 -> value = calendar.get(Calendar.YEAR) 1 -> value = calendar.get(Calendar.MONTH) + 1 2 -> value = calendar.get(Calendar.DAY_OF_MONTH) 3 -> value = calendar.get(Calendar.HOUR) 4 -> value = calendar.get(Calendar.MINUTE) 5 -> value = calendar.get(Calendar.SECOND) } return value}operator fun Date.compareTo(compareDate: Date): Int { return (time - compareDate.time).toInt()}fun Date.stringFormat(formatType: String): String { return SimpleDateFormat(formatType).format(this)} 转载地址:http://abea.baihongyu.com/