首页 > 解决方案 > 如何禁用 Scala 警告“无法在运行时检查此类型测试中的外部引用”

问题描述

我理解警告“无法在运行时检查此类型测试中的外部引用”的含义(如果最终案例类未在类本身中使用,则它缺少其“外部”指针)。尽管如此,我还是觉得这个警告非常烦人,因为即使我什至不匹配类型也会显示它,如下面的代码所示:

object X {
  class B {
    final case class A(a: Int)
  }

  def main(arg: Array[String]) = {

  }
}

case class除了发出not之外,我如何禁用此警告final@unchecked在定义之前使用case class没有帮助。

标签: scalawarningscompiler-warnings

解决方案


也许作为一种解决方法,我们可以通过将构造函数设为私有来使案例类生效

class B {
  case class X private (s: String)
}

防止继承

class C extends X("") // Error

同时仍然允许由于公共apply在同伴中的建设

(new B).X("")         // OK

dotty中似乎不存在该错误,因此一旦 Scala 3 发布,应该可以恢复到最终案例类(可能使用正则表达式替换)。


推荐阅读