Object-Android关键字,伴生对象,Kotlin静态

目录

1、定义一个类并生成它的单例对象

原理

调用方式

2、伴生对象(静态类)

原理

调用方式

3、对象表达式


Object在Android独特的前缀通常有以下三种用法:

1、定义一个类并生成它的单例对象

object Singleton{
    fun test(){}
}

原理

其实就是Java的单例模式,Kotlin中提供object方便创建单例

public final class Singleton {
   public static final Singleton INSTANCE;
 
   public final void xxx() {
   }
 
   private Singleton() {
   }
 
   static {
      Singleton var0 = new Singleton();
      INSTANCE = var0;
   }
}

调用方式

类已经自动生成单例对象,直接使用类名,即可获取单例对象,调用对象方法

Singlton.test()

2、伴生对象(静态类)

Kotlin语言特有companion object代码块,替代Java中static关键字,内部定义的方法和属性成为该类的静态方法和静态属性

class User(val male: Int){
    companion object {
        val MALE = 0
        
        fun isMale(male:Int) = male == MALE
    }
}

原理

public final class User {
   private final int male;
   private static final int MALE = 0;
   public static final User.Companion Companion = new User.Companion((DefaultConstructorMarker)null);
 
   public final int getMale() {
      return this.male;
   }
 
   public User(int male) {
      this.male = male;
   }
 
   public static final class Companion {
      public final int getMALE() {
         return User.MALE;public static final User.Companion Companion = new User.Companion((DefaultConstructorMarker)null);
      }
 
      public final boolean isMale(int male) {
         return male == ((User.Companion)this).getMALE();
      }
 
      private Companion() {
      }
 
      // $FF: synthetic method
      public Companion(DefaultConstructorMarker $constructor_marker) {
         this();
      }
   }
}
 

调用方式

User.MALE
User.isMale(1)

3、对象表达式

类似Java匿名内部类(在定义类的同时实例化类),一次性实现接口

拿点击事件举例,调用setOnClickListener()需传入一个实现View.onClickListener接口的对象

因为该对象是一次性使用,用匿名内部类   

 public void setOnClickListener(@Nullable OnClickListener l) {
        throw new RuntimeException("Stub!");
    }

       object:接口{重写接口方法}

button.setOnClickListener(object : View.OnClickListener{
        override fun onClick(v: View) {
            
        }
})
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值