0

IntelliJ 给我警告“特征中的抽象值可能会在初始化期间导致错误” - 如下图所示。

  • 这是什么意思 ?
  • 我应该认真对待这个警告吗?
  • 我应该使用def-s 而不是lazy val-s 吗?
  • 在这种情况下它们不一样吗?因为我们在这里谈论的是依赖注入,它创建了一个静态的——可能是循环的——对象图。
  • 但 !因为有lazy修饰符,所以图形是否是周期性的并不重要。正确的 ?
  • 这些值本身将简单地表现为它们是一个记忆函数,对吗?
  • 由于我们在这里(在静态对象图中)讨论引用,其中引用是有向边,对象是节点,这里有什么问题
  • 您能否举例说明使用lazy val-s 而不是def-s 会导致初始化期间出现问题?

感谢您阅读:)

整个代码库都在 github 上。

是有问题的特定行(在 github 上)。

我还在这里复制粘贴有问题的代码:

trait EntityMarshallers[V<:EntityValue[V]]{
  implicit lazy val decoderEntityV:    Decoder[Entity[V]]
  implicit lazy val encoderEntityV:    Encoder[Entity[V]]
  implicit lazy val _encoderV:         Encoder[V]
  implicit lazy val classTag:          ClassTag[V]

}

这是 IntelliJ 警告:

在此处输入图像描述

4

0 回答 0