未经检查的强制警告,使用抽象方法提供特定的返回值

摩br

我正在为具有非常标准页面的应用程序编写硒测试,这些页面可以很容易地由通用结构建模为页面的基础,并且只有几种基本类型(主要是包含记录列表的列表页面,而编辑页面在其中一个可以编辑一个记录)。为了对此建模,我有以下两个类:

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<>();
    }
    //...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未经检查的强制警告,使用抽象方法提供特定的返回值

来自分类Dev

在返回声明中未经检查的强制警告

来自分类Dev

Kotlin:基于函数返回值的未经检查的类型推断

来自分类Dev

Resharper中的警告“未使用纯方法的返回值”

来自分类Dev

使用Typescript强制返回值

来自分类Dev

使用Typescript强制返回值

来自分类Dev

未经检查的强制转换警告和 ClassCastException

来自分类Dev

应该检查方法的返回值吗?

来自分类Dev

应该检查方法的返回值

来自分类Dev

基于Class <>参数返回通用实现时未经检查的强制转换警告

来自分类Dev

使用JavaScript检查$ .get的返回值

来自分类Dev

如何使用 R 的优化、优化函数等来查找提供特定返回值的函数输入?

来自分类Dev

Java-使用WatchEvent抑制未经检查的强制转换警告是否安全?

来自分类Dev

检查SQL表值/使用返回值作为参数

来自分类Dev

未经检查仅在通用类型上的强制转换警告

来自分类Dev

为什么这会给出未经检查的强制转换警告?

来自分类Dev

带有参数化类型的未经检查的强制转换警告

来自分类Dev

使用属性更改方法的返回值

来自分类Dev

使用反射调用方法并返回值

来自分类Dev

使用反射调用方法并返回值

来自分类Dev

使用java(Threads)从方法返回值

来自分类Dev

使用javassist读取方法的返回值

来自分类Dev

使用Mockito时避免未经检查的警告

来自分类Dev

如何检查方法是否始终返回值

来自分类Dev

如何在Python中检查type()方法的返回值?

来自分类Dev

前缀命令输出并检查其返回值的最佳方法

来自分类Dev

从方法返回值

来自分类Dev

从方法返回值

来自分类Dev

使用node.js检查返回值以逗号分隔

Related 相关文章

热门标签

归档