具有不可为空的getter的可为空字段

Voj*_*ěch 1 kotlin

我正在尝试使用nullable setter和nullable field实现非nullable getter。

  1. 字段parent可以为null,表示父级为this。如果parent不为null,则parent为parent值。
  2. Getter不可为空,因为它会返回thisparent
  3. 设置器可以设置可为空的值,因为它可以删除当前父级。

我尝试了这个:

@ManyToOne(fetch = FetchType.EAGER)

@JoinColumn(name = "parent_id")
var _parent: T? = null
var parent: T
    get() = if (isParent) this as T else _parent!!
    set(value) {
        _parent = if (value == null) null else value.parent
    }
Run Code Online (Sandbox Code Playgroud)

我不喜欢该_parent变量,但是它对设置方法没有帮助,因为它仍然不能作为null parent: T,因此解决方案不起作用。

yol*_*ole 5

目前,无法使用不同的getter和setter类型定义属性。此功能有一个开放的功能请求,但未计划将其用于任何特定的Kotlin版本。