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

2023-11-23

我收到以下错误:

Bound mismatch: The generic method constructPage(WebDriver, int, Class<T>) of type     
Page<T> is not applicable for the arguments (WebDriver, int, Class<HomePage>). The 
inferred type HomePage is not a valid substitute for the bounded parameter <T extends 
Page<T>>

我正在尝试登录并返回主页(如果成功)和登录页面(如果不使用泛型)。

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

public abstract class Page<T extends Page<T>> extends SlowLoadableComponent<T> {

    protected static final <T extends Page<T>> T constructPage(WebDriver driver, 
    int timeoutInSeconds, java.lang.Class<T> pageClass) 
    {
        Page<T> p = null;

        try {
            Constructor<T> 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<SecuredPage> {

    .....
}

这是主页:

public final class HomePage extends SecuredPage {
    ......
}

这是登录页面:

public final class LoginPage extends Page<LoginPage>  {


    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 extends Page<T>> T login(final User user, final Class<T>     
            expectedPage) {
        enterUsername(user.getUsername());
        enterPassword(user.getPassword());
         loginButton.click();

        return Page.constructPage(getDriver(), getTimeoutInSeconds(), 
        expectedPage);
    }
}

问题是HomePage is a Page<SecuredPage>而不是一个Page<HomePage>. The login方法将返回一个Page<HomePage>来自其通用签名。

您必须将通用参数设置为HomePage与自身有关,而不是SecuredPage。这将解决编译器错误。保持SecuredPage通用,但确保其边界扩展SecuredPage<T>。然后分配HomePage本身为通用参数T in HomePage.

class SecuredPage<T extends SecuredPage<T>> extends Page<T> {
...
}
class HomePage extends SecuredPage<HomePage>  {
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定不匹配错误和java泛型方法 的相关文章

  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • Jenkins 未显示 Maven 编译器错误

    在 Jenkins 中构建多模块 maven 3 项目时 如果出现构建错误 我们会收到一条神秘消息 表明 Maven 编译器插件失败 这在上周才刚刚开始发生 INFO BUILD FAILURE INFO INFO Total time 1
  • 如何杀死 Java Future?

    我正在开发的服务使用 Future 来并行运行多个任务 每个任务最多可能需要一分钟才能完成 然而 外部库似乎有问题 因为在某些情况下 2 的时间 它不会返回 在这些情况下 我想给出 2 分钟的等待时间 如果还没有返回 我想杀死 future
  • 使用正则表达式验证电子邮件的最大长度

    我找到了用于电子邮件验证的正则表达式 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4 我希望电子邮件的最大长度为 20 个字符 因此我将其更改为 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4
  • 是否可以使用 Apache Tika 提取表信息?

    我正在寻找 pdf 和 MS Office 文档格式的解析器 以从文件中提取表格信息 当我看到 Apache Tika 时 正在考虑编写单独的实现 我能够从任何这些文件格式中提取全文 但我的要求是提取表格数据 我希望有 2 列采用键值格式
  • 在 doxygen 中使用 @see 或 @link

    我之前用 Javadoc 记录并使用了标签 see link or see foo and link foo 在我的描述中链接到其他课程 现在我尝试了doxygen 似乎这些标签不兼容 如果我运行 doxygen 完整的标签将被简单地解释为
  • 如何将一个 SwiftUI View 作为变量传递给另一个 View 结构

    我正在实施一个very自定义 NavigationLink 称为MenuItem并希望在整个项目中重用它 它是一个符合以下条件的结构体View并实施var body some View其中包含一个NavigationLink 我需要以某种方
  • 在 Eclipse 中删除空块之前的新行

    我更喜欢奥尔曼式 http en wikipedia org wiki Brace style Allman style大括号 例如 if foo magical prancing unicorn stuff 而不是 if foo unma
  • 我的 Kafka 流应用程序刚刚退出,代码为 0,什么也不做

    为了尝试 Kafka 流 我这样做了 public static void main String args final StreamsBuilder builder new StreamsBuilder final Properties
  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • java绕中心旋转矩形

    我想围绕其中心点旋转一个矩形 它应该保留在应该绘制的位置并在该空间中旋转 这是我的代码 AffineTransform transform new AffineTransform transform rotate Math toRadian
  • 为 REST API 生成 Swagger UI 文档

    我使用 Java 中的 JAX RS Jersey 开发了 REST API 我想为其转换 生成基于 Swagger 的 UI 文档 谁能以简单的方式告诉我如何做到这一点的精确 步骤 很抱歉 他们网站上给出的步骤对我来说有点模糊 有多种方法
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • 如何在不使用 -cp 开关的情况下在 Groovy 中自动加载数据库 jar?

    我想简化调用 Oracle 数据库的 Groovy 脚本的执行 如何将 ojdbc jar 添加到默认类路径以便我可以运行 groovy RunScript groovy 代替 groovy cp ojdbc5 jar RunScript
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • junit4 使用特定测试方法创建测试套件

    在 junit4 中 我想执行来自不同类的特定测试方法 即想要使用来自不同类的特定测试方法创建一个测试套件 假设我有两门课 public class Test Login Test public void test Login 001 Sy
  • 假布尔值=真?

    我在一本书中找到了这段代码 并在 Netbeans 中执行了它 boolean b false if b true System out println true else System out println false 我只是不明白为什
  • FragmentMap + ActionBar 选项卡

    我一直在尝试插入一个MapView进入一个ActionBar Tab 但我什至无法解决问题 即使谷歌搜索 这是主要活动 Override public void onCreate Bundle savedInstanceState supe

随机推荐

  • 删除特定字符串后的所有内容(文本的其余部分)

    我怎样才能删除像 gnirts 这样的字符串后面的所有内容 这可能会让您更好地理解 Before 之后 使用查找和替换 按 CTRL H 打开替换对话框 输入 gnirts 到Find what leave Replace with emp
  • 在不同的 .NET 框架之间共享记录器

    我正在创建一个可以在 Net Core 1 2 Net Core 2 0 和 NET Framework 4 6 之间共享的应用程序框架 所以我选择我的项目的目标框架为 NET Standard 在我的框架项目中 我有用于发送短信或电子邮件
  • 查找 Maven 模块化项目中未使用的代码

    我必须清理一个旧项目 一般知识是该项目包含许多我们可以删除的未使用的代码 这将减少一些麻烦并使维护变得更容易 我发现 Eclipse Core Tools 插件看起来是一个很棒的工具 但在我们的例子中 我们有一个 Maven2 项目 它分为
  • 使用 Mockito 模拟局部范围对象的方法

    我需要一些帮助 Example void method1 MyObject obj1 new MyObject obj1 method1 我想嘲笑obj1 method1 在我的测试中 但为了透明 所以我不想制作和更改代码 Mockito
  • 如何在OpenLayers中获取多边形的坐标

    我一直在寻找如何确定 OpenLayers 中组成多边形 要素 的点的坐标 假设我创建了一个像下面这样的多边形this例子 我需要知道组成多边形的点 这样我就可以将它们保存在某个地方 我敢打赌这很容易 我只是找不到任何东西 可能我不知道我应
  • ARM 未对齐内存访问解决方法

    我必须将源代码移植到运行 Linux 的 ARM 平台 不幸的是我遇到了未对齐的内存访问问题 源代码大量使用指针转换和访问 像下面这样的代码已经像病毒一样在代码库中传播 多亏了 gcc 我可以查明有问题的位置 Wcast align命令行选
  • scipy.io.wavfile.read 无法读取 24 位 .wav 文件

    看起来scipy io wavfile read无法读取 24 位 wav 文件 您知道如何处理它们吗 如果您的 wav 文件未压缩 您可以尝试readwav函数在这里 https gist github com WarrenWeckess
  • WordPress:媒体库网格模式无限加载

    所以这个问题很奇怪 因为对我来说 Wordpress 媒体库在仅网格模式下的 WordPress 管理菜单中不起作用 这是非常奇怪的问题 因为这个问题仅发生在 1 个帐户上 这将是昨天我尝试上传一堆的帐户 将图片添加到媒体库后出现错误 稍后
  • 计算可能的“蛇”密码

    我们都知道移动设备上的新密码屏幕 它由要连接的点矩阵组成 唯一的密码是点的向量 这些点可以连接到自身 但有以下限制 一个点只能连接到另外 1 个点 如果目标点和空闲点在同一条线上 则线路将被迫连接到更近的点 一个例子 由于之前没有连接中间点
  • ClojureScript 不需要 Clojure 的 defstruct 背后的原因是什么?

    defstructClojureScript 不支持 这似乎是设计使然 现在这可能实际上是 Clojure 语言中已弃用的部分 ClojureScript 的设计者只是希望每个人都继续前进 但这只是我的猜测 我的问题是 ClojureScr
  • MATLAB:使用“-append”标志时,将多个变量保存到“-v7.3”(HDF5) .mat 文件似乎更快。怎么会?

    NOTE 本问题涉及 2011 年旧 MATLAB 版本 R2009a 中观察到的问题 根据 2016 年 7 月的以下更新 MATLAB 中的问题 错误似乎不再存在 使用 R2016a 进行测试 向下滚动到问题末尾以查看更新 我正在使用
  • 根据联系人电话号码获取联系人照片 Android - 工作示例 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 安卓2 3 3 我查看了有关如何获取 联系人照片 的各种示例 但他们都不适合我 令人惊讶的是 我在 StackOVerFlow 上偶然发现了一段代码 我使用了它并且可以获取 照片 并将
  • 如何通过 socket.io 将图像发送到服务器?

    我一直在为此绞尽脑汁 但找不到合适的解决方案 我希望能够通过 socket io emmit 将图像上传到服务器 并稍后将它们保存到 MongoDB 数据库 我该怎么做呢 我见过有人用 base64 编码来做这件事 但我不知道它到底是如何工
  • 使用类型变量进行强制转换

    下面的代码不起作用 我想知道如何动态地将实例转换为运行时确定的类型 Convert ChangeType 返回一个仍需要转换的对象 所有 Invoke GetConstructor 或 Activator CreateInstance 的尝
  • Pyramid 中可以有多个 ini 配置文件吗?

    我想要一个相当于姜戈一真道设置布局 一个共享基础文件 然后是生产文件和开发文件 每个文件都导入共享基础文件 Pyramid 的配置可以实现这一点吗 是的 这是可能的 在我的一个项目中 我有一个production base ini文件和所有
  • 使用 Xcode 在 MacOS X 上安装 GMP

    我正在尝试在我的 C 和 C 程序中使用 GMP 库 我使用 Xcode 编写代码 我按照说明在我的计算机上安装了 GMP 最终得到了一个文件夹 usr local gmp 5 0 5 其中包含 gmp h 文件 我怎样才能让我的程序看到这
  • ZXing Barcode Reader:如何在捕获屏幕周围制作自定义边框?

    我想在 zxing 捕获屏幕 相机屏幕 周围放置自定义边框 我需要为此进行什么修改 我需要更改哪些活动和布局才能达到此效果 您根本不需要编辑布局 In ViewfinderView find onDraw方法 它是绘制 扫描矩形 的核心 您
  • Forecast.io API 与 jQuery 的结合使用

    我在使用 API 特别是 Forecast io 天气 API 创建完整的应用程序时遇到一些问题 为简单起见 我将 JS 直接放在 HTML 页面中 对于这个基本版本 我很高兴能有这样的展示 假设我想要当前温度 当前 gt 温度 另外 我不
  • 在 Django 中引用来自 Javascript 的静态图像

    所以我正在开发一个 Django 项目 并试图找出如何让 Javascript 能够从我的静态目录渲染图像 我修改了 settings py 以从 myproject static 加载静态文件 图像 js 等 并从 myproject t
  • 绑定不匹配错误和java泛型方法

    我收到以下错误 Bound mismatch The generic method constructPage WebDriver int Class