属性 没有默认值的初始化
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()
) {
}
我有一个字段可以在辅助构造函数中初始化,否则它将随着新对象的创建而被初始化。我不想将默认值用作 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()
) {
}