不可空的getter的可空字段

我正在尝试使用可为null的setter和可为空的字段来实现不可空的getter。

  1. 字段parent可以为null,这意味着父项是this 。 如果父项不为空,则父项是parent值。
  2. Getter不能为空,因为它返回thisparent
  3. Setter可以设置可为空的值,因为它可以删除当前父项。

我试过这个:

 @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 } 

我不喜欢_parent变量,但是它对setter没有帮助,因为它仍然不是parent: T ,所以解决方案不起作用。

这时不可能用不同的getter和setter类型来定义一个属性。 这个功能有一个开放的功能请求 ,但是没有计划任何特定的Kotlin版本。