Kotlin推断Java类上的属性不遵循正常的getter / setter约定?

时间:2019-03-19 20:42:15

标签: java kotlin

我正在寻找围绕Java库创建Kotlin包装器的设计决策。我面临的一个问题是,库中的POJO都不遵循用于getter和setter的常规Java Bean约定。

Kotlin可以推断遵循正常的getter / setter约定的Java对象的属性:

  

遵循getter和setter的Java约定的方法(名称以get开头的无参数方法和名称以set开头的单参数方法)在Kotlin中表示为属性。布尔访问器方法(getter的名称以is开头,setter的名称以set开头)表示为与getter方法具有相同名称的属性。

(请参见here

但是对于该库,所有POJO都具有getter和setter,它们只是字段的名称,而不是getField / setField,因此Kotlin无法推断属性访问语法。

包装这些对象并使用普通Kotlin约定的最干净方法是什么?

似乎使用扩展方法实现正确的getter和setter方法无法启用属性访问语法(我猜这是因为在内部,扩展方法已转换为静态实用程序类,并且扩展类并未实际修改)。 / p>

有哪些替代方法?

1 个答案:

答案 0 :(得分:4)

您可以将扩展名 properties 设为扩展名方法。

val Foo.bar: Bar
  get() = someOtherWayOfGettingBar()