Kotlin 語法 學習 第五 章 – jiaen_developer – mediano

Hoteles con piscina cubierta en Kotlin datos

data class TestData(val title: String, val content: String)

使用 Copiar 複製 TestData 修改 類別 , 並 修改 name 屬性:

fun main(args: Array<String>) {
val d1= TestData(title = "Code title", content = "Kotlin Learn")
val d2 = jack.copy(title = "Kotlin")
println(d1) //印出 TestData(title=Code title, content=Kotlin Learn)
println(d2) //印出 TestData(title=Kotlin, content=Kotlin Learn)
}

與 Java , , Kotlin 也 提供 泛型 , 為 型 別 安全 提供 保證 消除 消除 型 強 強 轉 煩惱。 我 我 理解 是 代表 什麼 型 別 可以 可以 轉 型態 型態 型態 型態 類別

class TestClass<T>(t : T) {
var value = t
}
var boxInt = TestClass<Int>(1)
var boxString = TestClass<String>("ABC")

„*“ 關鍵字«No lo s黿Ninguna?»

class A<T>(val t: T, val t2 : T, val t3 : T)
class Apple(var name : String)
fun main(args: Array<String>) {
//使用類
val a1: A<*> = A(12, "String", Bird("麻雀"))
val a2: A<Any?> = A(12, "String", Bird("麻雀")) //和a1是一樣的
val bird = a1.t3 //引數型別為Any
println(bird)
val apple2 = bird as Bird //強轉成Bird類
println(apple2.name)

//使用陣列
val l:ArrayList<*> = arrayListOf("String",1,1.2f,Bird("麻雀"))
for (item in l){
println(item)
}
}

列舉

enum class Type(val nameId: Int) {
UNKNOWN("unknow"),
RUNNING("running"),
WALKING("walking"),
CYCLING("cycling")
}
每一個列舉都是列舉類的例項,是可以被初始化:

Delegado (委派), 「關鍵字「 de 」, 下面 為方式 屬性 方式

class Example {
var p: String by Delegate();//委派屬性p 給Delegate類別
}
import kotlin.reflect.KPropertyclass Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef -> '${property.name}'"
}

operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$value -> '${property.name}' in $thisRef.")
}
}

// 屬性 屬性 另 一種 方法 , Ovatelné 觀察 屬性 「Observable」

import kotlin.properties.Delegates

class Author{
var name: String by Delegates.observable("初始值") {
prop, old, new ->
println("舊值:$old -> 新值:$new")
}
}

fun main(args: Array<String>) {
val author = Author()
author.name = "第一次賦值" //印出: 舊值:初始值 -> 新值:第一次賦值
author.name = "第二次賦值" //印出: 舊值:第一次賦值 -> 新值:第二次賦值
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *