创建改造实例的最合适方法是什么(不一定在下面的三个选项之间)
这三种方式有什么区别?
选项1

object BuffApi {
    val retrofitService : BuffApiService by lazy {
        retrofit.create(BuffApiService::class.java)
    }
}
选项2
object BuffApi {
    val retrofitService2: BuffApiService = retrofit.create(BuffApiService::class.java)
}
选项3
class BuffApi {
    val retrofitService: BuffApiService = retrofit.create(BuffApiService::class.java)
}

最佳答案

如果您可能不调用retrofitService,或者它不经常使用,则最好使用选项1-val retrofitService : BuffApiService by lazy {,因为在您访问或调用变量retrofitService之前,该程序将不会对其进行初始化,这会减少内存使用量。
在另一种情况下,Option_2会有所帮助,因为它是静态的,您不必每次都要访问它时都创建一个新对象,并且最好使用单个Service实例,例如( Retrofit 仓库)类。
Option_2和Option_3的ByteCode生成几乎相同:40和64行:但是对于Option_1,它大约为146行

07-24 09:48