当前位置: 首页 > 知识库问答 >
问题:

如何覆盖findElements方法,使其返回实现WebElement接口的类型列表

匡翰
2023-03-14

有一个界面WebElement。

我想做一个包装器UIElement,它实现了WebElement。

我已经重写了所有方法。

但是返回List的findElementS方法面临一个问题

这是我的方法,IDE没有给出上面的错误:

List<UIElement> list = new ArrayList<>();
    for (WebElement el : this.element.findElements(by)) {
        UIElement uiElement = new UIElement(this.driver, el);
        list.add(uiElement);
    }
    return list;

这是UIElement类和构造函数:

public class UIElement implements WebElement {
private final WebDriver driver;
private final WebElement element;
private final Actions actions;
private final JavascriptExecutor jsExecutor;
private final Waiter waiter;


public UIElement(WebDriver driver, By by) {
    this.driver = driver;
    this.element = this.driver.findElement(by);
    this.actions = new Actions(this.driver);
    this.jsExecutor = (JavascriptExecutor) this.driver;
    this.waiter = new Waiter(this.driver);
}

public UIElement(WebDriver driver, WebElement element) {
    this.driver = driver;
    this.element = element;
    this.actions = new Actions(this.driver);
    this.jsExecutor = (JavascriptExecutor) this.driver;
    this.waiter = new Waiter(this.driver);
}
}

共有1个答案

景才英
2023-03-14

在重写的方法中,无法将“Webelement列表”更改为“UIElement列表”。

您不能将List的泛型类型更改为该泛型类型的子类型。问题是对任何实例的引用都可以是该实例的子类型

有关更多详细信息,请参阅此链接-Stackoverflow

 类似资料:
  • 问题内容: 我偶然发现了对Java继承的好奇心,我希望您对此提出更好的想法: 假设两个接口A和A1 接口A1扩展了A 接口A具有返回泛型类型的方法。 通用类型将是。 现在的基本思想是将这种通用返回类型从接口A中更改 为 接口A1中的 一开始似乎很容易(不好的事情会在以后出现) 我们将接口A声明为 和接口A1一样 如您所见,我们被迫编写接口A本身,以允许使用基于泛型的“子类”覆盖它。(实际上,gen

  • 我有一个接口 创建 有两种方法,一种是异步的,一种是同步的。我想为这两个方法中的每一个提供一个接口实现。 对于异步方法,其实现可能如下所示: 但是我应该如何实现使用同步方法创建 的类 呢? 我可以实现方法以同步运行: 然后,编译器将警告不要在方法签名中使用 : 此异步方法缺少'await'运算符,将同步运行。考虑使用'await'运算符等待非阻塞API调用,或'await task.run(...

  • 问题内容: 假设我正在设计类似以下界面的内容: 但是,需要注意的是,for的返回类型和参数匹配具体的实现,而不仅仅是。也就是说,如果我具有该实现,则需要具备以下条件: 如上所述,不会引起任何编译错误,但是不能保证在所有实现中返回类型都匹配。当然,甚至不会编译,因为签名与接口不匹配。 一种候选解决方案是在泛型中使用自引用或递归范围: 这将使我得到我想要的东西,但有一个例外:其他实现可能传递错误的泛型

  • 问题内容: 假设我有一个超类,它定义了以下抽象方法 现在,如果我想在某些子类中覆盖它 我收到有关类型安全和未经检查的转换的警告: 类型安全:返回类型为从类型需要选中转换,以符合从类型 没有下摔倒,如果?有什么办法可以适当消除警告吗? 问题答案: 重写方法的返回类型必须是重写方法的返回类型的子类型。 不是where 的子类型。T在这里未知。 是每个子类型化规则的的子类型。 有关通配符的一些子类型化规

  • 好吧,乖点。 这里有一个枚举,它实现了一个接口,该接口返回一个“原始类型”,它给我一个关于接口中的方法的警告。 如果我将接口的方法更改为: 它会在的方法签名上变为未经检查的警告。如果我改变的签名: 然后返回有一个不兼容的类型错误,因为

  • 问题内容: 我想组成另一种类型的类型,但用假冒替换字段之一(这是接口值)。我遇到的问题是正在使用基础字段,因此我似乎无法覆盖该字段。 我在这里演示了这个问题:https : //play.golang.org/p/lHGnyjzIS-Y 为什么打印?我要打印。 谢谢。 问题答案: 通过,您正在调用 提升的 方法,方法接收者将是哪种类型,并调用何处是哪种类型,这就是它打印的原因。 在Go中有嵌入,但