java - 如何创建具有条件返回类型的类方法

标签 java

请原谅本文中的术语问题。这似乎是一个基本的 Java 问题,我只是在搜索中找不到结果。

我想创建一个可能会在 Selenium pageObject 框架中返回多种类型的方法。请参见下面的示例:

public class ProductPage extends BasePage {
    public ProductPage(WebDriver driver) {
         super(driver);
    }

    public ProductPage enterValue(String inputText) {
         driver.findElement(By.id("someId")).sendKeys(inputText);
         return this;
    }

enterValue 方法有时会登陆到与 ProductPage 不同的页面。如果我知道它可以导航到其他地方,我倾向于创建一个不同的方法。但是,这会使其他人更难理解和维护测试。

有没有办法混淆返回类型并在方法中添加条件以允许方法返回不同的类型?这是我最好的尝试:

public NotSureWhatToPutHere enterValue(String inputText) {
     driver.findElement(By.id("someId")).sendKeys(inputText);
     if(isAlertPresent){
          return new ProductAlertPage(driver);
     } else if (isErrorDisplayed) {
          return new ErrorPage(driver);
     } else {
          return this;
     }
}

最佳答案

你需要使用多态或者继承。

因此 ProductAlertPageErrorPage 都继承自 interfaceclass,例如页面。然后你可以得到 Page 的返回类型。


在你的情况下 ErrorPageProductAlertPage 也应该扩展 BasePage 然后你可以返回 BasePage 作为返回类型.

public BasePage enterValue(String inputText) {
  driver.findElement(By.id("someId")).sendKeys(inputText);
    if(isAlertPresent){
      return new ProductAlertPage(driver);
    } else if (isErrorDisplayed) {
      return new ErrorPage(driver);
    } else {
      return this;
   }
}

关于java - 如何创建具有条件返回类型的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190077/

相关文章:

java - Apache Commons FileUtils 检查文件是否存在于 ftpurl 中

java - Eclipse 类设计器和设计<--> java 源代码绑定(bind)

java - 在 C++ 中是否有类似 Java 初始化 block 的构造?

java - Byte Buddy - java.lang.NoSuchMethodException - 正确的defineMethod语法是什么?

java - hibernate - 保存其中包含实体的实体(数据库中已经存在)

java - 在集群模式下将 Spark 从 eclipse 部署到 YARN 时出错

java - Vaadin项目编译和执行

java - 使用扫描仪读取文件数据

java - 新开发人员 - 如何构建一些教程应用程序?

java - 防止倾斜调用 onCreate,以及 Activity 运行的时间测量。