Я столкнулся с этим кодом, и я не уверен, зачем кому-то это делать.По сути, автор решил сделать конструктор класса частным, чтобы его нельзя было создать вне файла, и добавил открытый метод к объекту-компаньону в классе, который создает новый экземпляр этого класса.В чем выгода этого подхода?
Вот что я нашел:
class Foo private constructor(private val arg1: Any) {
//more code here..
companion object {
fun newFoo(arg1: Any) = Foo(arg1 = arg1)
}
}
Почему это лучше, чем этот?
class Foo(private val arg1: Any) {
//more code here..
}