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
。
请注意 UiObject2Condition
是 androidx.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
}
}