Tag: 委托属性

如何测试委托属性的生成器?

在我目前的项目中,有一个课程稍后将会由其他人来实施。 这个类为委托的属性提供了一些生成器。 abstract class BaseClass { protected val delegated1 get() = new Delegated1Impl() protected val delegated2 get() = new Delegated2Impl() … } 这个基类可以这样使用: class Example : BaseClass() { var field1 by delegated1 var field2 by delegated2 } 现在我想测试这些委托生成器。 其中一些包含我想要测试的逻辑,但现在我只想知道每次调用它们时都会返回一个新的实例。 现在我的问题是:我怎样才能测试这些发电机? 生成器在扩展类之外是不可见的,所以我不能简单地创建它的一个实例并调用这些方法。 @Test fun `delegated1 should always return a new instance`() { val target = object: […]

不能使用具有委派属性的自定义getter

我是kotlin新手,无法弄清楚这个问题。 我有一个不可空的财产,可能会或可能不会使用。 因此,我已经委派了一个懒惰的方式,以便在需要时进行初始化。 private val labelAnimator: ObjectAnimator by lazy { ObjectAnimator.ofFloat(this, "floatingLabelFraction", 0f, 1f) } 但是,我也需要在每次访问时设置该对象的某些属性。 fun getLabelAnimator(): ObjectAnimator { labelAnimator.duration = (if (isFloatingLabelAnimating) 300 else 0).toLong() return labelAnimator } 但是我不能使用自定义的getter,因为这个属性是委托的。 我如何以最好的方式实现这一点?