栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin的单例、静态对象、匿名内部类、工厂方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin的单例、静态对象、匿名内部类、工厂方法

1. 关键字Object

       这个关键字在kotlin中用以修饰类,在声明类的同时直接就给我们创建了这个类的一个实例,

而我们在访问这个类的时候就可以直接通过类名,

例如: 

    object  Publisher {

                val name:String = "my username"

    }

   fun main() { 

           val publisher: Publisher = Publisher

           println(publisher.name)

 }

2、伴生对象

         和java相比,Kotlin本身不支持static关键字,作为替代方案,kotlin提供了伴生对象的概念

在类中定义一个用特殊关键字标记的对象: companion, companion修饰的对象,使得外部可以直接通过companion容器类来访问这个对象(companion object) 的属性和方法,就像java中对静态防范和静态成员的访问形式,

class Publisher{

   companion object {

            const val name: String = " my usernaem"

  }

}

fun main(){

      val  publisher : Publisher = Publisher()

     println(Publisher.name)

}

想这样,Factory对象的创建依然是跟创建普通对象一样,在对name成员的访问的形式使用的是类名.XXX方式访问,

伴生对象实现接口

        interface doPublish(){ 

                       fun dispatchMessage(str: String) 

        } 

        class Center private constructor(val name: String) { 

             companion object dispatchProxy :doPublish { 

                        override fun dispatchMessage(str : String) {
                             .......

         }

  }

在调用的时候,可以直接使用Center.doPublish()方式来调用, 类名.xxxx() 

对象表达式

     对象表达式就是改变写法的匿名内部类

     例如: 

          View.setonClickListener(new View.onClickListener(){
               @Override 

                 public void onClick(View view){

                }

}

   kotlin的写法
         view.setonClickListener(

                object: OnClickListener{ 

                  //ToDO 

               }

          } 

       

          工厂方法

                abstract class Product {

                    abstract void print() ; }

           class ConcreteProductA  : Product { 

                     override fun Product factoryMethod() { 

                       println("");                       

}}

          class ConcreteProductB : Product { 

                       override fun print() {

                        println();          

} }        

           

    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号