gpt4 book ai didi

generics - 如何使用 Scala 的 Manifest 类在运行时实例化已删除的类?

转载 作者:行者123 更新时间:2023-12-01 11:07:25 26 4
gpt4 key购买 nike

我正在做一些 WebDriver+PageObject 的事情。

(如果您不熟悉 PageObjects,这是一种模式,其中您有一个类代表您网站上的每个页面,它使用域语言公开页面的所有功能,从测试中隐藏 HTML 内容。)

我想偷懒,在我的抽象页面类中有一个“提交”方法,我的所有其他页面都从该类扩展。我还希望此方法新建下一个 Page 子类并返回它。

这是我在 Page 类中的内容:

def submitExpecting[P <: Page[P]](implicit m: Manifest[_]): P = {
driver.findElement(By.xpath("//input[@type='submit']")).click
m.erasure.getConstructor(classOf[WebDriver]).newInstance(driver).asInstanceOf[P]
}

我是这样调用它的:

val userHomePage = userSignupPage
.login("graham")
.acceptTermsAndConditions
.submitExpecting[UserHomePage]

编译这个,我得到:

error: could not find implicit value for parameter m: Manifest[_]
.submitExpecting[UserHomePage]

我以为我很聪明,但显然我不是。 ;)我做错了什么?

最佳答案

您需要使您的Manifest 与类型参数相关,即

def submitExpecting[P <: Page[P]](implicit m: Manifest[P]): P

关于generics - 如何使用 Scala 的 Manifest 类在运行时实例化已删除的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3890358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com