接續前天的學習內容:[Day 23] Kotlin 學習日記 III & Extensions
問題:
1. companion object是什麼?
Kotlin裡面有幾種方便的singleton 寫法,用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的開發方式已經進展了這麼多了,讓人很有幹勁呢!
紀錄分享給大家~