gpt4 book ai didi

java - 带有提供特定返回值的抽象方法的未经检查的强制转换警告

转载 作者:行者123 更新时间:2023-12-02 08:29:44 24 4
gpt4 key购买 nike

我正在为一个应用程序编写 Selenium 测试,该应用程序具有非常标准的页面,可以轻松地通过通用结构建模作为页面的基础,只有几种基本类型(主要是包含记录列表的列表页面,并且编辑页面,可以编辑一条记录)。为了对此进行建模,我有以下两个类:

public abstract class AbstractListPage<E extends EditPage> extends AbstractSelfOpeningPage implements ListPage {

// Provides the specific object for the edit page when it's opened
protected abstract E editPageHook();

public E getEditPage() {

return editPageHook();
}

public E openEditPage(String key, boolean search) {

//Do page opening stuff like clicking buttons

// Return new object for the page that has been opened
return getEditPage();
}
}

// Implementation class
public class DossiersListPage extends AbstractListPage<DossierPage> {

@Override
protected DossierPage<DossiersListPage> editPageHook() {

return new DossierPage<>(driver, this);
}
}

// Usage in test, this shows an unchecked cast warning
DossierPage<DossiersListPage> dossierPage = new DossiersListPage(driver).openPage().openEditPage("3905");

我想知道是否有一个好的方法来解决这个问题,我错过了什么?我目前没有遇到任何问题,但是我的测试代码中的警告让我感觉有点不确定。

这里使用泛型的原因是这样我可以对页面上的元素进行建模,以流畅的方式返回它们所属的页面:

public abstract class AbstractPageElement<P extends Page> implements PageElement<P> {

@Override
public P click() throws TimeoutException {
// Do click
return page;
}
}

// DossierPage
public class DossierPage<L extends ListPage> extends AbstractEditPage<L> {

public OrderDate<DossierPage<L>> orderDate = new OrderDate<>(driver, this);
public OrderType<DossierPage<L>> orderType = new OrderType<>(driver, this);
public Status<DossierPage<L>> status = new Status<>(driver, this);
}

// Test
dossierPage.orderDate.click()
.orderType.click()
.status.click();

最佳答案

我可以对问题进行逆向工程。 DossierPage 必须如下所示:

public class DossierPage<E extends AbstractListPage> extends EditPage {
//...
}

现在我们遇到了问题。您可以通过指定更多类型参数来解决它:

public class DossiersListPage extends
AbstractListPage<DossierPage<DossiersListPage>> { // this is the tricky part

@Override
protected DossierPage<DossiersListPage> editPageHook() {
return new DossierPage<>();
}
//...
}

关于java - 带有提供特定返回值的抽象方法的未经检查的强制转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37938377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com