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

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

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

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


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

局部類:

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


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

讓我們測試一下Message類:


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

