1.泛型
泛型允许我们不指定具体类型的情况下进行编程
泛型的两种定义方式:泛型类,泛型方法
//泛型类
class MyClass<T> {
fun method(param: T): T {
return param
}
}
//泛型方法
fun <T> method(param: T): T {
return param
}
具体应用:
fun <T> T.build(block:T.() ->Unit):T{
block
return this
}
//上面就是完成一个类型apply扩展函数的功能
2.类委托和委托属性
委托基本概念:操作对象自己不会去处理某段逻辑,而是会将工作委托给另一个辅助对象去处理。
①.类委托如下:
class MySet<T>(val helperSet:HashSet<T>):Set<T>{
override val size: Int
get() = helperSet.size
override fun contains(element: T): Boolean = helperSet.contains(element)
override fun containsAll(elements: Collection<T>): Boolean = helperSet.containsAll(elements)
override fun isEmpty(): Boolean = helperSet.isEmpty()
override fun iterator(): Iterator<T> = helperSet.ite