为啥它的类型是 Nothing?
Posted
技术标签:
【中文标题】为啥它的类型是 Nothing?【英文标题】:Why it has the type Nothing?为什么它的类型是 Nothing? 【发布时间】:2019-10-24 08:56:31 【问题描述】:我正在尝试在我的 bdd 测试中使用https://www.testcontainers.org/,如下所示:
final class DetectorSpec extends BddSpec
private val listener1 = TestProbe()
private val listener2 = TestProbe()
private val detector = system.actorOf(DetectorSupervisor.props)
var sapMock = new FixedHostPortGenericContainer("zerocoder/sapmock:2.1.1")
.withFixedExposedPort(8080, 9090)
override def afterAll(): Unit =
TestKit.shutdownActorSystem(system)
......
上面代码的问题是,变量sapMock
的类型为Nothing
。看来,方法链接不起作用。
为什么变量sapMock
的类型为Nothing
?
【问题讨论】:
listenerN
、detector
、afterAll
和 DetectorSpec
本身有什么用?它们似乎没有以任何方式用于sapMock
的定义中。这不是最小的。
我正在尝试测试我的演员,因为我需要他们。
我没有粘贴所有代码。
【参考方案1】:
FixedHostPortGenericContainer
需要容器本身的 F 有界参数类型。您根本没有指定任何类型参数,所以看起来您最终得到了类似原始类型的东西。
试试
class SapMock extends
FixedHostPortGenericContainer[SapMock]("zerocoder/sapmock:2.1.1")
val sapMock = new SapMock.withFixedExposedPort(8080, 9090)
【讨论】:
F-bounded parameter type
是什么?
@zero_coding <SELF extends FixedHostPortGenericContainer<SELF>>
。通常,任何带有约束的类型参数都类似于X <: F[X]
。
F-bounded
让我很困惑。以上是关于为啥它的类型是 Nothing?的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin & 'onConfigurationChanged' overrides nothing
java.lang.String cannot be cast to scala.runtime.Nothing Scala中的Nothing类型
是否有 `Nothing => A` 类型的 Scala 函数?或者如何构建一个?