java泛型错误_绑定不匹配错误和java泛型方法

我收到以下错误:

Bound mismatch: The generic method constructPage(WebDriver, int, Class) of type

Page is not applicable for the arguments (WebDriver, int, Class). The

inferred type HomePage is not a valid substitute for the bounded parameter

Page>

我正在尝试登录并返回主页,如果成功,则返回LoginPage,如果不使用泛型.

我有一个基类,Page由SecuredPage扩展,用于登录墙后面的页面.我写了一个通用的辅助方法来构造任何类型的页面. LoginPage上的登录方法使用此方法. LoginPage扩展页面和HomePage扩展SecuredPage. SecuredPage扩展了Page.如果返回LoginPage,则登录方法有效,但我在尝试返回HomePage时遇到上述错误.由于HomePage是页面的子类,因为它的父类扩展了Page,所以我很困惑为什么HomePage不是有界参数< T extends Page< T>>的有效替代品.

public abstract class Page> extends SlowLoadableComponent {

protected static final > T constructPage(WebDriver driver,

int timeoutInSeconds, java.lang.Class pageClass)

{

Page p = null;

try {

Constructor pageConstructor = pageClass.getConstructor(

WebDriver.class, String.class, Integer.TYPE);

p = pageConstructor.newInstance(driver, driver.getCurrentUrl(),

timeoutInSeconds);

p.get();

} catch(Exception e) {

}

return pageClass.cast(p);

}

}

这是SecuredPage类:

public class SecuredPage extends Page {

.....

}

这是主页:

public final class HomePage extends SecuredPage {

......

}

这是LoginPage:

public final class LoginPage extends Page {

public final HomePage loginWithGoodCredentials(final User user) {

return login(user, HomePage.class);

}

public final LoginPage loginWithBadCredentials(final User user) {

return login(user, LoginPage.class);

}

public final > T login(final User user, final Class

expectedPage) {

enterUsername(user.getUsername());

enterPassword(user.getPassword());

loginButton.click();

return Page.constructPage(getDriver(), getTimeoutInSeconds(),

expectedPage);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值