我使用了memberExtensionProperties()
方法,但扩展属性的结果集合为空。随附测试代码。什么是正确的程序?
class ExtensionPropertyTest {
class DummyClass{}
val DummyClass.id get() = 99
val DummyClass.name get() = "Joe"
@Test
fun testExtensionProperties() {
val dummyClass = DummyClass()
expect(dummyClass.id).toEqual(99) // OK
val properties = DummyClass::class.memberExtensionProperties
.stream()
.toList()
expect(properties).toHaveSize(2) // Fails due a zero size
}
}
memberExtensionProperties
不返回类的扩展,而是返回同时是扩展的成员:
fun main() {
println(DummyClass::class.memberExtensionProperties)
}
class DummyClass {
val String.foo: Int
get() = toInt()
}
如果可能的话,找到一个类上的所有扩展并不是那么容易,因为扩展是从它们的接收器分离的,它们可以位于类路径中的任何位置。