Kotlin中的自定义UiObject2Condition

问题描述 投票:0回答:1

是否有可能扩展公共抽象类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>的空子类,Condition不公开。

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

UIAutomator版本:2.2.0

UiObject2Condition反编译:

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);
}
kotlin android-uiautomator
1个回答
0
投票

创建androidx.test.uiautomator包并将类添加到其中工作正常。

package androidx.test.uiautomator

class NoChildCondition: UiObject2Condition<Boolean>() {
    override fun apply(obj: UiObject2?): Boolean {
        return obj?.childCount == 0
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.