В настоящее время в моей программе Java у меня есть базовый класс родителя с несколькими методами, которые возвращают новый экземпляр самого себя. Например:Кастинг базового класса на производный класс в Java
public BasePage fill(String input, By locator) {
driver.findElement(locator).clear();
driver.findElement(locator).sendKeys(input);
return new BasePage(driver);
}
Кроме того, у меня есть несколько классов, которые расширяют этот базовый класс своими методами. Мой вопрос заключается в следующем: есть ли способ в моей основной программе вызывать эти родительские методы, но присваивать возвращаемое значение дочернему классу без использования бросков? Например, если бы я имел класс loginPage
ребенка, которые необходимо использовать этот метод в основной программе, как бы я превратить это:
loginPage = (LoginPage) loginPage.fill("username", usernameLocator);
в этом:
loginPage = loginPage.fill("username", usernameLocator);
где я инициализировать класс:
public class LoginPage extends BasePage {
}
Хотя не упоминается в этом примере, можно разрешить ему вернуться любого из дочерних классов, таким образом, что оно не ограничивается только один класс.
Вы знакомы с ['Java Polymorphism'] (http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html)? –
Я прочитал страницу о полиморфизме Java, но у нее нет никакой информации о возврате родительского класса и присвоении этого значения дочернему классу без литья – bagelmakers