为啥它的类型是 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

【问题讨论】:

listenerNdetectorafterAllDetectorSpec 本身有什么用?它们似乎没有以任何方式用于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类型

Scala中的None,Nothing,Null,Nil

是否有 `Nothing => A` 类型的 Scala 函数?或者如何构建一个?

打字稿返回类型(布尔值 vs 'is' vs <nothing>)差异? [复制]

scala - 高阶函数将类型T更改为Nothing