Kotlin note

二.围绕 kotlin_finish 进行总结 2018-1-5 19:14:10

2.Api (http)
1.ActivityStack
  • companion object : 伴生对象
对象表达式和对象声明( object 关键字 )
1.要创建一个继承自某个(或某些)类型的匿名类的对象:

//多个超类型可以由跟在冒号后面的逗号分隔的列表指定
ViewPager(this).addOnPageChangeListener(object : ViewPager.OnPageChangeListener{
     override fun onPageScrollStateChanged(state: Int) {
     }
     override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
     }
     override fun onPageSelected(position: Int) {
     }
})

2.只需要“一个对象而已”,并不需要特殊超类型 : 

private fun ab(){
    val ab = object {
        val a : Int = 1
         val b : String = "Tony"
    }
  println("ab() >> ab.a : ${ab.a}; ab.b : ${ab.b}")
}
//匿名对象可以用作只在本地和私有作用域中声明的类型。
private fun foo() = object {
    val a: Int = 1
}

fun foos() = object {
    val b: Int = 1
}
foo().a //私有函数,所以其返回类型是匿名对象类型
foos().b //共有函数,所以其返回类型是 Any

3.对象声明( object )

//单例模式
object UIUtils{
    fun showT(str : String){ ... }
}
//使用
UIUtils.showT("sid")

4.伴生对象( companion )

//运行时它们仍然是真实对象的实例成员,而且还可以实现接口
companion object {
    private val ins: ActivityStack by lazy { ActivityStack() }
    fun get(): ActivityStack = ins
}

  • by lazy : 懒加载
1.在用到的时候才会被初始化( 懒加载且同步 )
2.初始化时记住结果,后面使用的都是记忆的结果 ( 单例 )
3.举例 : 
val lazyValue: String by lazy {
    println("computed!")
    "Hello"
}
fun main(args: Array) {
    println(lazyValue)
    println(lazyValue)
}

这个例子打印:
computed!
Hello
Hello
  • T : AppCompatActivity : 泛型
1.型变 声明处型变
2.类型投影
  • .filter : 过滤
1.使用集合
//对集合进行迭代
for(item in items){ println(item) }

//使用 in 运算符来判断集合内是否包含某实例
when(items){
    "tony" in items -> println("tony")
    "sid" in items -> println("sid")
}

//使用 lambda 表达式来过滤(filter)和映射(map)集合
items
    .filter{ it.startWith("s") }
    .sortedBy { it }
    .map { it.toUpperCase() }
    .forEach { println(it) }
  • .forEach : 迭代集合
  • it : 关键字
  • .javaClass : 获得 class 的实例
class Hello

val clazz = Hello::class.java

val hello = Hello()
val clazz2 = hello.javaClass

Hello::class 拿到的是 Kotlin 的 KClass,这个是 Kotlin 的类型
如果想要拿到 Java 的 Class 实例,那么就需要 .javaClass
  • .sortedBy

一.初学的时候一些总结( 有遗漏,慢慢补 ) : 2017-11-5 19:13:27

  • val:定义不可改变,只读的
val a: Int = 1
val b = 2
val c: String = "helloworld"
  • var:定义变量
var d: Int = 0
var e: String = ""
var f: String? = ""
var h: String? = null
  • extends:当需要继承某个类时
//没有二级构造,且有无参构造函数
class BaseActivity : AppCompatActivity()
  • implements:当需要实现某个接口时
class Test : Runnable
  • lateinit:延迟初始化
protected lateinit var activity: AppCompatActivity
  • Unit
    相当于java中的null,常用在方法返回值,当方法返回值为空时该值也可以省略
  • 方法声明
//main方法
fun main(args: Array): Unit {}
//带参有返回值
fun getStrLength(str:String) :Int = str.length;
  • Any:任意类型
  • for循环
for (i in 0..5) {
        println(i)
    }
  • 省去fbc
apply plugin: 'kotlin-android-extensions'

你可能感兴趣的:(Kotlin note)