iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 25
0
Software Development

0 -> Android -> Kotlin 開發筆記系列 第 25

[Day 25] Kotlin 學習日記 IV

接續前天的學習內容:[Day 23] Kotlin 學習日記 III & Extensions


問題:
1. companion object是什麼?

Kotlin裡面有幾種方便的singleton 寫法,用Object即可達成,而且

  • Object expression是马上执行的
  • Object declaration是lazy的,在第一次使用时执行
  • Companion Object是在类第一次加载时执行

2. 變數的後面加上?= null表示什麼呢?

Kotlin的變數預設是不能為null的,
如果一定要有null也需要加上在變數後加上"?"

那語言中允許使用null會發生什麼問題呢?

3. get()又是什麼?

kotlin可以省略掉許多程式碼, get()也不例外

val isEmpty: Boolean
  get() = this.size == 0

上面這段就是宣告了一個變數,
型別為Boolean的 isEmpty,
同時實作了他的getValue()函式。



4. 什麼是as?

如果我們今天有三個class分別是
A class extends B class extends C class,
在Java我們要辨別使用中的class是否為A or B or C要怎麼做?

if(this.getClass().equals(A.class)) {} if else …

現在只要使用as就可以做到了

5. 什麼是property?

以前我們要取用A class的變數isUsed,我們需要使用A.getCount()

class A{
    private int count;

    public int getCount() {
        return getCount;
    }

    public void setCount(int count) {
        this.count = count;
    }
}

現在只要A.count即可,property幫你處理好了get跟set的問題,
只要宣告的時候告知這個變數是var or val即可。

6. 雙驚嘆號的意思是什麼?

出現了雙驚嘆號,通常是你要改寫程式的部分,
kotlin允許你使用可空變數執行,
但接下來遇到判斷式都會要加上雙驚嘆號才能編譯過,
這表示程式可能在執行到這個判斷式的時候,
出現null exception然後導致crash。


7. internal constructor的詳細用法是?

constructor是指稱後面的宣告變數的那段程式碼為建構子,
internal則是宣告整個module的人都可以看見這個建構子。

8. @get:GET 是?

如前面所提的是property的宣告子,
這裡是因為kotlin可以直接實作,
處理掉Retrofit的GET這個anotation的函式,
並將其轉為一個val值,所以才會變成這樣,

如果筆者有理解錯誤也歡迎指正。


這一陣子在學習kotlin的同時,也有去聽別人的講座分享,
赫然發現原來現在kotlin的開發方式已經進展了這麼多了,讓人很有幹勁呢!

紀錄分享給大家~


上一篇
[Day 24] 插播Android 兩個Library介紹
下一篇
[Day 26] Kotlin 學習筆記V
系列文
0 -> Android -> Kotlin 開發筆記30

尚未有邦友留言

立即登入留言