日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Kotlin】Kotlin 单例 ( 懒汉式 与 恶汉式 | Java 单例 | Kotlin 单例 | 对象声明 | 伴生对象 | get 方法 | ? 与 !! 判空 )

發布時間:2025/6/17 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Kotlin】Kotlin 单例 ( 懒汉式 与 恶汉式 | Java 单例 | Kotlin 单例 | 对象声明 | 伴生对象 | get 方法 | ? 与 !! 判空 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • I . 單例的懶漢式與惡漢式
        • II . Java 中的懶漢式與惡漢式
        • III . Kotlin 中對應 Java 的懶漢式與惡漢式
        • IV . Kotlin 對象 ( object ) 聲明
        • V . Kotlin 伴生對象 ( companion object )
        • VI . ? 與 !! 作用



I . 單例的懶漢式與惡漢式



1 . 單例類簡介 : 單例是保證在應用程序的內存中 , 只存在一個實例的設計模式 ;


① 餓漢式 : 這個類只要一聲明對象 , 只要該類被調用到 , 不管有沒有用到其單例對象 , 必須馬上創建一個該單例對象 ( 類對象很餓 ) ;

② 懶漢式 : 聲明類對象時 , 什么都不做 , 只有類獲取單例對象時 , 才創建對象 ( 創建對象很懶 ) ; 只有類獲取單例對象時 , 才創建對象 ;



2 . 單例類特點 :


私有靜態化單例成員變量 ;

私有化構造函數 ;

公共靜態獲取單例方法 ;


詳細的 Java 與 Kotlin 單例示例詳細看下面的四個示例



II . Java 中的懶漢式與惡漢式



1 . Java 餓漢式 單例模式 : 在類第一次被調用就創建單例對象 ;

package singleton.java;/*** 餓漢單例模式* 在類第一次被調用就創建單例對象*/ public class Student {// 1 . 私有靜態化單例成員變量 ( 餓漢模式 )private static Student student = new Student();// 2 . 私有化構造函數private Student(){}// 3 . 公共靜態獲取單例方法public static Student getStudent(){return student;}}

2 . Java 懶漢式 單例模式 : 在單例對象獲取時才創建單例對象 ;

package singleton.java;/*** 懶漢單例模式* 只有在單例對象獲取時才創建單例對象*/ public class Student {// 1 . 私有靜態化單例成員變量private static Student student;// 2 . 私有化構造函數private Student(){}// 3 . 公共靜態獲取單例方法public static Student getStudent(){// 懶漢模式if(student == null){student = new Student();}return student;}}

III . Kotlin 中對應 Java 的懶漢式與惡漢式



1 . Kotlin 餓漢單例模式 : Kotlin 餓漢單例模式很簡單 , 一行代碼即可實現 , 該行代碼的作用等同于上面的 Java 中的 Student 餓漢式單例模式的一坨代碼 ;

package singleton.kotlin/*** 餓漢式單例模式實現* 被 object 關鍵字修飾的類時靜態類 , 該類的成員方法和變量都是靜態的* 調用時直接使用 Student.study() 即可調用該方法 */ object Student {fun study(){println("學習")} }

該示例涉及到對象聲明 , 看下一小節說明 ;



2 . Kotlin 懶漢單例模式 : 該示例中涉及到了伴生對象 , 字段 getter 方法定義 , ? 和 !! 判空等額外知識點 ;

package singleton.kotlin/*** 懶漢式單例模式實現** 1 . 私有化構造函數*/ class Student private constructor() {/*** 伴生對象*/companion object {// 2 . 私有化靜態變量 , 賦值為空// ? 符號表示該變量任何時候不會報空指針異常 , 該變量可以為 空 nullprivate var student : Student? = null//這是 Kotlin 中特有的 get set 方法定義方式// 在成員變量的下面可以直接定義該成員的 get() set() 方法get() {if (student == null){student = Student()}return student}// 3 . 公共 ( 默認 ) 靜態方法 , 獲取 student 成員// !! 表示該對象必須不能為空public fun getSingleton() : Student{return student!!}/*** 定義普通方法*/fun study(){println("學習")}}}//調用單例方法測試 fun main() {//伴生對象方法 可以直接使用 Student.伴生對象方法 進行調用//學習Student.study()//學習Student.Companion.study()}

該示例涉及到伴生對象聲明 , getter 方法 , ? 和 !! 等知識點 , 看下一小節說明 ;



IV . Kotlin 對象 ( object ) 聲明



1 . object 對象聲明 : Kotlin 中使用 object 聲明一個 Student 類時 , 這個類是單例類 ;

object Student {fun study(){println("學習")} }

2 . 單例類實例化時機 ( 餓漢模式由來 ) : 使用 object 聲明 Student 單例類后 , 會立刻實例化該單例類 , 相當于餓漢單例模式 ;


3 . 繼承特征 : object 修飾的單例類 , 可以繼承其它類 ;


4 . object 聲明的單例類對象調用 : 直接使用類名 Student 調用即可 , 該類名等同于單例對象 , 如調用上述單例類的 study() 方法 , 使用如下調用 ;

//調用 Student 單例對象的 Student.study()

V . Kotlin 伴生對象 ( companion object )



1 . 伴生對象 : 類內部的對象 , 使用 companion object 修飾 , 是伴生對象 ; 是類內部的單例類 ;


2 . 伴生對象名稱 : 上面單例類的 懶漢模式 , 省略了伴生對象的名稱 , 這種情況下使用默認名稱 Companion ;


3 . 單例調用 : 可以直接使用類調用伴生對象的方法 , 上述定義的 Student 類 及伴生對象 , Student 與 Student.Companion 是等價的 ; 因此測試時 , 下面的兩個方法都是調用伴生對象的方法 ;

//調用單例方法測試 fun main() {//伴生對象方法 可以直接使用 Student.伴生對象方法 進行調用//學習Student.study()//學習Student.Companion.study()}

VI . ? 與 !! 作用



? 和 !! 使用方式 : ? 和 !! 都是加在變量名后修飾變量名的 ;


① ? 作用 : 使用 ? 符號加在變量名后面 , 表示該變量可以被賦值成 null ;

② !! 作用 : 使用 !! 符號加在變量名后面 , 表示該變量不可以被賦值成 null ;

總結

以上是生活随笔為你收集整理的【Kotlin】Kotlin 单例 ( 懒汉式 与 恶汉式 | Java 单例 | Kotlin 单例 | 对象声明 | 伴生对象 | get 方法 | ? 与 !! 判空 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。