java - 我不希望我的函数返回 null。什么是最好的解决方案?

标签 java selenium-webdriver automation

    public <T extends BasePage> T clickSubMenuItem(MenuBar menuBar) {
    int hoveredMenuItemIndex =mouseOverToMenuItemByTitle(menuBar.menuOptionTitle);
    if (hoveredMenuItemIndex > -1) 
    {
     allSubMenuItem = getWebElements(By.cssSelector("#topnav > .rootmenu > li:nth-child(" + hoveredMenuItemIndex + ") > ul > li > a"));
        for (WebElement subMenuItem : allSubMenuItem) {
            if (subMenuItem.getAttribute("title").contains(menuBar.subMenuTitle)) {
                subMenuItem.click();
                return instantiatePageClass((Class<T>) menuBar.expectedPageClass);
            }
        }
    }
    return null;
}

此函数返回一个类,但如果未单击菜单项,它不应返回任何内容并失败。我不想使用 null 并且不允许使用 try catch block

最佳答案

在 Java 8 中,将返回类型更改为 Optional<T> , 然后返回 Optional.of(...) Optional.empty() .

然后调用者可以调用 returnValue.isPresent() , 如果 true 可以调用 returnValue.get() 得到实际值。检查 javadoc 以获取其他有用的方法。

public <T extends BasePage> Optional<T> clickSubMenuItem(MenuBar menuBar) {
    int hoveredMenuItemIndex =mouseOverToMenuItemByTitle(menuBar.menuOptionTitle);
    if (hoveredMenuItemIndex > -1) {
        allSubMenuItem = getWebElements(By.cssSelector("#topnav > .rootmenu > li:nth-child(" + hoveredMenuItemIndex + ") > ul > li > a"));
        for (WebElement subMenuItem : allSubMenuItem) {
            if (subMenuItem.getAttribute("title").contains(menuBar.subMenuTitle)) {
                subMenuItem.click();
                return Optional.of(instantiatePageClass((Class<T>) menuBar.expectedPageClass));
            }
        }
    }
    return Optional.empty();
}

关于java - 我不希望我的函数返回 null。什么是最好的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737671/

相关文章:

javascript - 如何单击打开页面上的书签(包含 URL)

java - 将变量从一个类传递到另一类的 sendkeys 函数

visual-studio - 如何定义用于将多个文件添加到项目的模板?

python - 如何使用 python 3 对文件执行上下文菜单操作

java - Android应用程序需要双击才能登录

java - 用于验证多个数字范围的正则表达式

java - Libgdx FreeTypeFontGenerator 不能在 android 上运行?

java - Eclipse 3.8 和 4.2 有什么区别?

C#.NET : Scraping dynamic (JS) websites

python - Pywinauto 控制媒体播放器