前往kotlin的路上

weixin_33895657發表於2017-05-20
1689643-fdbd39374da8bc6e.jpg
kotlin

寫在前面的絮叨

我是一個安卓程式設計師,前兩天谷歌推薦用kotlin來作為開發Android專案的首選語言,所以我也嘗試著用一個陌生的語言來試一試。這篇文章不寫那些基礎的語法啥的,主要是直接記錄一下在專案直接用kotlin會是怎麼樣的,可能不全,但我會慢慢的補充進來。歡迎大家一起來補充乾貨。

相關連結

官網:http://kotlinlang.org/docs/reference/
github:https://github.com/JetBrains/kotlin

正文

  • 定義變數
    var hello: String = "hello" //所有的變數必須初始化
    var num: Int = 1
    var num = 1 // 可以根據上下文推斷出來的變數型別也可以不寫
    var nullable: Any = null!! //不會為空的變數要用!!告訴他這東西不會為空
    var nullable2: Any? = null //可能為空的直接在變數型別後加問號即可
  • 定義常量
val helloWorld: HelloWorld = HelloWorld()//定義常量要用關鍵字val
  • 定義可被繼承的類
open class BaseClass { //需要加open關鍵字來宣告此類可以被繼承,類預設為final型別
    open fun baseFun(){} //必須被重寫的方法
    fun someFun(){} 
}
  • 繼承
class HelloWorld : BaseClass(){
...
  • 定義介面
interface ISomeInterface{
    fun doSome(): Any //有返回值的需要註明返回值型別
    fun doAnother() //沒有返回值的可以不寫
    interface InnerInterface{
        fun innerFun(): Unit //沒有返回值的也可以寫Unit 等同於java中的void
        fun justDo(): Unit{ //介面裡可以定義具體方法,這個方法不會被要求實現
            print("hello world")
        }
    }
}
  • 實現介面
class HelloWorld : ISomeInterface{
...
  • 同時繼承父類並實現介面
class HelloWorld : BaseClass(), ISomeInterface.InnerInterface{
...
  • 物件非空則
        var button: View? = null
        button?let {
            button.setOnclickListener(...)
        }
  • 物件為空則
        var button: View? = null
        button?:let {
            button = View()
        }
  • 如果物件不為空,物件為空(面對比較簡單操作)
        var nullable: Any? = null
        print(nullable?.toString() ?: "空的")
  • 實現匿名內部類,例如: OnClickListener(這裡不演示lambda表示式方式)
 interface OnClickListener {
    fun onClick (view: View): Unit
}
class View{
    ...
    fun setOnClickListener(listener: OnClickListener): Unit{
        ...
    }
}
var button: View = View()
button.setOnClickListener(
               object: OnClickListener{ //注意這裡object是關鍵字
                   override fun onClick(view: View) {
                       TODO("not implemented") //
                   }
               }
        )
  • 對ArrayList用法的總結和擴充套件(ArrayList

程式碼規範(最基本的)

  • 在繼承或實現介面時,前要加空格,而用來表示變數型別時則不加
  • 命名規範參考java

相關文章