Propiedad no opcional con setter personalizado Kotlin

Espero que alguien pueda ayudar, escribo moviéndome de Java a Kotlin y quiero tener una propiedad que se inicializó en el bloque init, que tiene un setter personalizado pero no es opcional.

Aquí está mi código a continuación, sin embargo, esto tiene una advertencia de que la label debe ser inicializada

Me gustaría hacerlo tarde, pero eso significa que tiene que ser opcional (que no quiero)

class SkiMarker(mapView: MapView, tag:Tag) : Marker(mapView){ var tag:Tag <- ERROR here set(tag){ this.tag = tag if(tag != null){ this.mPosition = GeoPoint(tag.lat,tag.lon) } } init { this.tag = tag this.mPosition = GeoPoint(tag.lat,tag.lon) val window = MyInfoWindow(mapView,tag) this.infoWindow = window window.subject.observeOn(AndroidSchedulers.mainThread()).subscribe { it -> setIconForTracking(it) } } } 

Muchas gracias de antemano por cualquier comentario

Para esa lógica, solo necesita usar un campo de respaldo :

 class SkiMarker(mapView: MapView, tag:Tag) : Marker(mapView) { var tag: Tag = tag set(newTag){ field = newTag // `field` is a keyword } } 

Tenga en count que el código como set(newTag) {tag = newTag} es equivalente a setTag(newTag: Tag) { setTag(newTag) } donde en realidad está llamando al setter desde sí mismo en una recursión.

Además, la tag nunca es null , por if(tag != null) tanto, if(tag != null) tiene sentido.