属性 没有默认值的初始化

Property initialization without default value

我有一个字段可以在辅助构造函数中初始化,否则它将随着新对象的创建而被初始化。我不想将默认值用作 null 或创建一个可以由构造函数中传递的对象替换的对象。

我的实现:

class AggregationAdapter() {

    private var _libraryFilters: FiltersFromLibrary? = null
    private var libraryFilters: FiltersFromLibrary
    get() {
        if (_libraryFilters == null) _libraryFilters = FiltersFromLibrary()
        return _libraryFilters!!
    }
    set(value) {
        if (_libraryFilters == null) _libraryFilters = value
    }

    constructor(filtersFromLibrary: FiltersFromLibrary) : this() {
        libraryFilters = filtersFromLibrary
    }
}

所以,我想看看我的方法有多好。

您不需要辅助构造函数。您可以使用默认初始化程序 在主构造函数中。您上面的所有代码都可以替换为:

class AggregationAdapter(
    private val libraryFilters: FiltersFromLibrary = FiltersFromLibrary()
) {

}