本文主要是介绍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 = 0fun 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 methodpublic 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) {}
})
这篇关于Object-Android关键字,伴生对象,Kotlin静态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!