為什麼Kotlin屬性訪問方式比Java的Get/Set方式好
簡要介紹
一開始接觸Kotlin,就發現Kotlin是採用屬性訪問的,和之前Java的Get/Set方法不一樣.不過感覺這也沒有什麼牛B的,因為Java只要把欄位設定為public,那也是可以通過屬性訪問的.
類樣例
- Java程式碼
public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
- Kotlin程式碼(相比於Java,簡介很多啊)
class User { var name :String?=null }
訪問方式對比
- Java方式(通過Get/Set):
user.setName("jerry"); String name = user.getName();
- Kotlin方式
user.name = "jerry" val name = user.name
- Java屬性方式(屬性設定為public)
user.name = "jerry"; String name = user.name;
差異分析
-
Java裡屬性之所以提倡採用Get/Set訪問,是因為希望提供一種隔離以適應變化.
如上面User中的name屬性,雖然我們設定為jerry,但是如果希望獲取name時變成大寫的,那就可以在Get或Set方法中做文章,而Java方式如果改成屬性方式後,則無法再採用上面方式適應變化了.
public String getName() { return name.toUpperCase(); }
或
public void setName(String name) { this.name = name.toUpperCase(); }
- 那Kotlin是適應上述變化,該如何做呢?
var name :String?=null get() = field?.toUpperCase()
或
var name :String?=null set(value) { field = value?.toUpperCase() }
如果要將屬性設定為只讀的,可以在get前面增加private即可.
var name :String?=null private set
總結
Kotlin相比於Java的寫法更為簡潔,同時又保持了擴充套件性,故值得一試哦.
安卓開發技術分享: https://www.jianshu.com/p/442339952f26
更多技術總結好文,請關注:「程式園中猿」
