Java 具有自定义setter Kotlin的非可选属性

Java 具有自定义setter Kotlin的非可选属性,java,android,properties,kotlin,Java,Android,Properties,Kotlin,我希望有人能提供帮助,我正在编写从java到Kotlin的代码,我希望有一个在init块中初始化的属性,它有一个自定义setter,但不是可选的 下面是我的代码,但是有一个警告,标签必须初始化 我想让它成为lateInit,但这意味着它必须是可选的(我不想要) class SkiMarker(地图视图:地图视图,标记:标记):标记(地图视图){ 变量标签:标签 SetIconformTracking(it) } } } 非常感谢您的评论对于该逻辑,您只需使用支持字段: class SkiMa

我希望有人能提供帮助,我正在编写从java到Kotlin的代码,我希望有一个在init块中初始化的属性,它有一个自定义setter,但不是可选的

下面是我的代码,但是有一个警告,标签必须初始化

我想让它成为lateInit,但这意味着它必须是可选的(我不想要)

class SkiMarker(地图视图:地图视图,标记:标记):标记(地图视图){
变量标签:标签
SetIconformTracking(it)
}
} 
}

非常感谢您的评论

对于该逻辑,您只需使用支持字段

class SkiMarker(mapView: MapView, tag:Tag) : Marker(mapView) {
    var tag: Tag = tag
        set(newTag){
            field = newTag  // `field` is a keyword
        }
}
请注意,类似于
set(newTag){tag=newTag}
的代码相当于
setTag(newTag:tag){setTag(newTag)}
,它实际上是在递归中从自身内部调用setter


而且,
tag
从来都不是
null
,因此
如果(tag!=null)
是没有意义的

次要注意事项,但值得一提的是Kotlin约定是使用
value
和setter参数。
class SkiMarker(mapView: MapView, tag:Tag) : Marker(mapView) {
    var tag: Tag = tag
        set(newTag){
            field = newTag  // `field` is a keyword
        }
}