kotlin学习笔记之 object
2019-09-29 本文已影响0人
R7_Perfect
object使用场景
1.单例
object RepositoryManager{
fun method(){
println("I'm in object declaration")
}
}
fun main(args: Array<String>) {
RepositoryManager.method()
}
编译成的java代码:
class RepositoryManager{
private RepositoryManager(){}
public static final RepositoryManager INSTANCE = new RepositoryManager();
}
public static void main(String[] args) {
RepositoryManager.INSTANCE.method();
}
2.静态访问
由于kotlin中没有static关键字,没有静态对象,取而代之的是:
包级别函数(package-level function)和伴生对象
class ObjectTest {
companion object MyObject{
val a = 20
fun method() {
println("I'm in companion object")
}
}
}
fun main(args: Array<String>) {
//方式一
ObjectTest.MyObject.method()
println(ObjectTest.MyObject.a)
//方式二(推荐方式)
ObjectTest.method()
println(ObjectTest.a)
}
MyObject是以静态内部类存在的
3.扩展访问局限性
Java中,如果定义了接口,调用这不能超出接口中定义的方法
在kotlin中使用对象可以实现:
interface AA {
fun a()
}
fun main(args: Array<String>) {
val aa = object : AA {
override fun a() {
println("a invoked")
}
fun b() {
println("b invoked")
}
}
aa.a()
aa.b() //is ok