Kotlin基礎(chǔ)教程之伴生對(duì)象,getter,setter,內(nèi)部,局部,匿名類,可變參數(shù)
先來看一個(gè)名為Message的類

在這個(gè)類中有一段包含在companion object中的代碼,需要說一下的是,Kotlin的class并不支持static變量,所以需要使用companion object來聲明static變量,其實(shí)這個(gè)platformStatic變量也不是真正的static變量,而是一個(gè)伴生對(duì)象,
這個(gè)伴生對(duì)象位于Message類中定義的一個(gè)叫做Companion的內(nèi)部類中,如圖:

可以看到在Kotlin中編譯器自動(dòng)生成類是很常見的事情,那么這個(gè)伴生對(duì)象作何理解呢?
我的理解是,伴生對(duì)象與單例模式相關(guān),這個(gè)對(duì)象是Companion類的對(duì)象,伴隨著Message類而生.
Companion這個(gè)內(nèi)部類是編譯器自動(dòng)生成的,我們也可以自己定義內(nèi)部類,如:

回到Message類中,我們可以看到在info和what域下還存在get和set,不錯(cuò),這就是getter和setter函數(shù),一般getter函數(shù)使用默認(rèn)的就好,setter函數(shù)其實(shí)就是在賦值的時(shí)候進(jìn)行一些處理,為了防止setter函數(shù)無限遞歸調(diào)用,在類中可以使用$符號(hào)訪問成員變量,可以繞過getter和setter函數(shù)直接訪問成員變量.
當(dāng)然,在Kotlin中除了內(nèi)部類,還有匿名類和局部類,如圖:
匿名類:


可以看到r這個(gè)變量所屬類型是匿名的(no name provided)

局部類:

局部類,就是在函數(shù)內(nèi)部定義的類,只在函數(shù)內(nèi)部可以訪問.
在Kotlin中還提供了一些額外的特性,比如可變參數(shù)


這段代碼運(yùn)行結(jié)果如下:

讓我們測(cè)試一下Message類:


可見Kotlin的getter和setter所起的作用
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Idea設(shè)置spring boot應(yīng)用配置參數(shù)的兩種方式
本文通過兩個(gè)方式介紹Idea設(shè)置spring boot應(yīng)用配置參數(shù),一種是配置VM options的參數(shù)時(shí)要以:-DparamName的格式設(shè)置參數(shù),第二種可以參考下本文詳細(xì)設(shè)置,感興趣的朋友跟隨小編一起看看吧2023-11-11
SpringCloud如何創(chuàng)建一個(gè)服務(wù)提供者provider
這篇文章主要介紹了SpringCloud如何創(chuàng)建一個(gè)服務(wù)提供者provider,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
java開發(fā)實(shí)現(xiàn)訂閱到貨通知幫我們買到想買的東西
這篇文章主要為大家介紹了java開發(fā)實(shí)現(xiàn)訂閱到貨通知幫我們買到想買的東西示例demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Struts2攔截器Interceptor的原理與配置實(shí)例詳解
攔截器是一種AOP(面向切面編程)思想的編程方式.它提供一種機(jī)制是開發(fā)者能夠把相對(duì)獨(dú)立的代碼抽離出來,配置到Action前后執(zhí)行。下面這篇文章主要給大家介紹了關(guān)于Struts2攔截器Interceptor的原理與配置的相關(guān)資料,需要的朋友可以參考下。2017-11-11

