Kotlin object的三种用法
生活随笔
收集整理的這篇文章主要介紹了
Kotlin object的三种用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- Kotlin object的三種用法
- 概述
- object 匿名內部類
- object 單例模式
- @JvmStatic
- companion object 伴生對象
- 工廠模式
Kotlin object的三種用法
概述
在Kotlin中,object關鍵字主要有三種用法:
- 匿名內部類
- 單例模式
- 伴生對象
其實這三種用法本質都是定義一個類的時候同時創建對象。
object 匿名內部類
- 在Kotlin中定義匿名內部類需要使用object關鍵字。
- Kotlin中可以在繼承一個抽象類時,同時可以實現多個接口i。
在Java中定義匿名內部類
Collections.sort(list, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {if (o1 == null) {return -1;}if (o2 == null) {return 1;}return o1.compareTo(o2);} });在Kotlin中定義匿名內部類
Collections.sort(list, object : Comparator<String?> {override fun compare(o1: String?, o2: String?): Int {if (o1 == null) {return -1;}if (o2 == null) {return 1;}return o1.compareTo(o2)} })在繼承一個類時同時實現多個接口
interface A {fun a() }interface B {fun b() }abstract class Base {abstract fun sayHello() } val obj = object : Base(), A, B {override fun a() {}override fun b() {}override fun sayHello() {} }object 單例模式
- 在Kotlin中,可以直接用object關鍵字實現一個單例模式。
- 等價于Java中的靜態代碼塊的單例模式,在JVM成功加載類的時候就創建對象實例。
翻譯為Java代碼
public final class DBManager {@NotNullpublic static final DBManager INSTANCE;static {DBManager var0 = new DBManager();INSTANCE = var0;}private DBManager() {}public final void getData() {} }@JvmStatic
object DBManager {@JvmStaticfun getData() {} }//在Java中調用 DBManager.getData();翻譯為Java代碼
public final class DBManager {@NotNullpublic static final DBManager INSTANCE;static {DBManager var0 = new DBManager();INSTANCE = var0;}private DBManager() {}@JvmStaticpublic static final void getData() {} }companion object 伴生對象
class UserManager {companion object {fun getData() {}} }//在Kotlin中調用 UserManager.getData()//在Java中調用 UserManager.Companion.getData();翻譯為Java代碼
public final class DBManager {@NotNullpublic static final DBManager.Companion Companion = new DBManager.Companion((DefaultConstructorMarker)null);public static final class Companion {public final void getData() {}private Companion() {}public Companion(DefaultConstructorMarker $constructor_marker) {this();}} }工廠模式
data class Goods private constructor(val name: String) {companion object {@JvmStaticfun create(name: String): Goods {return Goods(name)}} }val a = Goods.create("汽車") println(a) val b = Goods.create("飛機") println(b)// Goods(name=汽車) // Goods(name=飛機)總結
以上是生活随笔為你收集整理的Kotlin object的三种用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内网渗透学习-Windows信息收集
- 下一篇: Flutter 路由源码解析