<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      kotlin--Object關鍵字

      2024-02-19 19:46  ttylinux  閱讀(190)  評論(0)    收藏  舉報
      1.匿名內部類
      Object可以實現,繼承一個抽象類的同時,實現多個接口。
      interface A {
          fun funA()
      }
      
      
      interface B {
          fun funB()
      }
      
      
      abstract class Man {
          abstract fun findMan()
      }
      
      
      fun main() {
          // 這個匿名內部類,在繼承了Man類的同時,還實現了A、B兩個接口
          val item = object : Man(), A, B{
              override fun funA() {
                  // do something
              }
              override fun funB() {
                  // do something
              }
              override fun findMan() {
                  // do something
              }
          }
      }
      

       

      2.實現單例模式
      object UserManager {
          fun login() {}
      }
      

       

      3.伴生對象,實現靜態方法訪問的效果

      class Person {
      //  改動在這里
      //     ↓
          companion object InnerSingleton {
              @JvmStatic
              fun foo() {}
          }
      }
      
      
      實現工廠模式:
      User.create("Tome")
      //  私有的構造函數,外部無法調用
      //            ↓
      class User private constructor(name: String) {
          companion object {
              @JvmStatic
              fun create(name: String): User? {
                  // 統一檢查,比如敏感詞過濾
                  return User(name)
              }
          }
      }
      

       

       
      4.Object實現單例模式
      object UserManager {
          // 對外暴露的 user
          val user by lazy { loadUser() }
      
      
          private fun loadUser(): User {
              // 從網絡或者數據庫加載數據
              return User.create("tom")
          }
      
      
          fun login() {}
      }
      UserManager.user
      只有訪問的時候才加載用戶
      
      ======================================================================
      
      伴生對象Double check
      class UserManager private constructor(name: String) {
          companion object {
              @Volatile private var INSTANCE: UserManager? = null
      
      
              fun getInstance(name: String): UserManager =
                  // 第一次判空
                  INSTANCE?: synchronized(this) {
                  // 第二次判空
                      INSTANCE?:UserManager(name).also { INSTANCE = it }
                  }
          }
      }
      
      
      // 使用
      UserManager.getInstance("Tom")
      
      第一次判空,沒有進入同步資源,避免同步開銷;
      第二次判空,進入同步塊,確保只有一個線程去創建該對象。第二次判空的原因是,
      有可能存在其他線程創建了該對象。
      ===================================================================================================
      
      抽象類模板
      

        

       

       

      主站蜘蛛池模板: 精品亚洲综合一区二区三区 | 亚洲熟妇自偷自拍另亚洲| 四虎国产精品永久在线| 九九热中文字幕在线视频| 精品偷拍一区二区三区| 久久精品国产蜜臀av| 国产亚洲精品成人aa片新蒲金| 偷拍专区一区二区三区| 人妻无码久久久久久久久久久| 欧美成人精品一区二区三区免费| 亚洲五月丁香综合视频| 国产免费又黄又爽又色毛 | 年轻女教师hd中字3| 国产一区精品综亚洲av| 亚洲欧美在线观看品| 久久大香萑太香蕉av黄软件| 内地自拍三级在线观看| 国产精品亚洲欧美大片在线看| 亚洲精品免费一二三区| 99久久精品国产一区二区蜜芽| 亚洲综合黄色的在线观看| 日本一道一区二区视频| 欧美牲交40_50a欧美牲交aⅴ| 国产精品人妻| 毛葺葺老太做受视频| 亚洲av日韩av中文高清性色| 亚洲精品久久久久久婷婷| 永州市| 精品亚洲国产成人| 亚洲一区成人在线视频| 亚洲一区二区精品偷拍| 国产免费午夜福利在线观看| 上司人妻互换中文字幕| 亚洲春色在线视频| 日本亚洲欧洲无免费码在线| 亚洲精品人成网线在线播放va| 狠狠色丁香婷婷综合尤物| 久久99热只有频精品8| 中文字幕日韩一区二区不卡| 亚洲中文无码永久免费| 国产亚洲综合区成人国产|