在Kotlin中' Class. newinstance() '和' Class() '有区别吗? &



两者之间在Kotlin中有任何功能差异吗?

class Foo {
companion object {
fun newInstance() = Foo()
}
}
// Create new instance somewhere else
val foo = Foo.newInstance()

class Foo {
}
// Create new instance somewhere else
val foo = Foo()

我认为第一种方法只是添加更多的样板代码和占用更多的内存,因为伴侣对象。我说的对吗?

注意:我在Android环境和Foo实际上是一个Fragment在我的情况下,如果它的关系。

在大多数情况下,第一个代码块没有任何优势。

然而,在Android Fragment的情况下,有一个模式,你永远不会使用构造函数直接创建Fragment。这是因为Android框架需要能够实例化你的Fragment代表你的时候,它是重新创建Fragment,它只会这样做,通过使用空(零参数)构造函数。因此,当你需要将参数传递给一个新的Fragment时,你不需要为它创建一个构造函数,而是创建一个工厂函数,用空的构造函数创建Fragment,然后通过将参数添加到Fragment的bundle中来传递参数。

当你不需要任何参数以这种方式传递给你的新片段时,实际上不需要工厂函数来代替构造函数。然而,为了保持一致性,有些人还是会这样做。你是否要遵循这个模式完全取决于你。

在文档中不需要伴生对象https://developer.android.com/guide/fragments/create芬兰湾的科特林

最新更新