Kotlin 中的自定义 UiObject2Condition

Custom UiObject2Condition in Kotlin

是否可以扩展 public 摘要 class UiObject2Condition?

这样做

class NoChildCondition: UiObject2Condition<Boolean>() {
    override fun apply(obj: UiObject2?): Boolean {
        return obj?.childCount == 0
    }
}

导致错误:public open fun apply(obj: UiObject2?): Boolean defined in circlecomplete.ciom.uitests.NoChildCondition' has no access to 'public/*package*/ abstract fun apply(p0: UiObject2!): Boolean! defined in androidx.test.uiautomator.UiObject2Condition', so it cannot override it

请注意 UiObject2Conditionandroidx.test.uiautomator.Condition<UiObject2, R> 的空子 class 而 Condition 不是 public。

执行apply方法导致编译错误。不实现它会编译但会导致运行时错误。

UIAutomator 版本:2.2.0

UiObject2条件反编译:

package androidx.test.uiautomator;

public abstract class UiObject2Condition<R> extends Condition<UiObject2, R> {
    public UiObject2Condition() {
    }
}

条件反编译:

package androidx.test.uiautomator;

abstract class Condition<T, R> {
    Condition() {
    }

    abstract R apply(T var1);
}

创建 androidx.test.uiautomator 程序包并向其中添加 class 工作正常。

package androidx.test.uiautomator

class NoChildCondition: UiObject2Condition<Boolean>() {
    override fun apply(obj: UiObject2?): Boolean {
        return obj?.childCount == 0
    }
}