【发布时间】:2017-12-22 15:29:56
【问题描述】:
我知道您不能在 Java 中使用委托属性语法,也无法像在 Kotlin 中那样“覆盖”set/get 运算符,但我仍然想使用现有的属性委托在 Java 中。
例如,一个简单的 int 委托:
class IntDelegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>) = 0
}
在 Kotlin 中我们当然可以这样使用:
val x by IntDelegate()
但是我们如何在 Java 中以某种形式使用IntDelegate?这是开始,我相信:
final IntDelegate x = new IntDelegate();
然后直接使用函数。但是如何使用getValue 函数呢?我为它的参数传递什么?如何为 Java 字段获取 KProperty?
【问题讨论】:
-
为什么需要调用这样的功能?它仅由 kotlin 可见和使用。
标签: java delegates kotlin delegation delegated-properties