具有非可空吸气剂的可空场

时间:2017-05-17 15:06:32

标签: kotlin

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

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

    @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,因此解决方案不起作用。 / p>

1 个答案:

答案 0 :(得分:5)

目前,无法定义具有不同getter和setter类型的属性。此功能有open feature request,但没有针对任何特定的Kotlin版本进行规划。