繁体   English   中英

如何根据泛型类型转换为 class?

[英]How to cast a class according to a generic type?

我正在用 Java 和 Selenium 编写自动化。我想创建一个泛型方法,根据泛型类型参数调用存在于不同子页面(类)中的方法。

  • 所有页面都继承自BasePage。
  • 每个页面都有一个名为 xxx() 的方法的不同实现
  • 通用方法将放置在帮助程序 class 中(我猜)

是这样的:

 public <T> BasePage doSomething(Class<T> pageType)
{
//Navigate to the page and gets the page
BasePage page = navigate....

//call the method according to the received class
page.xxx()
}

如何将页面设置为正确的类型并调用其方法?

您可以在此处进行多项改进,其中之一是使T在您的方法中扩展BaseClass ,如下所示:

public <T extends BasePage> T doSomething(Class<T> pageClass) {
    // nav to page
    T page = ...

    // call to xxx
    page.xxx();

    // ...somehow return page
    return page;
}

这将使 function 的返回类型在您使用它的地方更加具体。 此外,您不需要在此处强制转换任何内容,因为您已经拥有“比BasePage更具体的内容”。 然后在BasePage中创建一个抽象方法:

abstract class BasePage {
    ...
    // has to be implemented in the child classes.
    public abstract whatever xxx(...)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM