5

我创建了一个x包含源文件的文件夹package.scala。该文件包含以下代码:

package x

package object y
{
  trait A

  case class B extends A
}

Eclipse 显示编译错误:illegal cyclic reference involving object y.

我不太确定这意味着什么。如果我尝试定义一个普通类(删除case),错误消息就会消失。另一种解决方案是使用普通对象而不是包对象:

package x

object y
{
  trait A

  case class B extends A
}

循环引用在哪里?我怎样才能删除它?据我了解,我无法在包对象中定义特征和案例子类。但我不知道这个限制来自哪里。

4

1 回答 1

2

正如 PedroFuria 所说,这是一个错误,但在这些情况下查看与错误相关的问题总是好的。具体来说,结论是在 2011 年 9 月:

在包对象中定义类在 Scala 编译器本身中只工作了一半。您可以通过在正确的目录中定义您的类来解决此问题。我怀疑这将很快得到完全支持。

所以最好参考这个相关的问题,它指出很容易替换:

package object mypkg {
  class MyClass
}

具有以下内容:

package mypkg {
  class MyClass
}

这将适用于 Eclipse / EclipseIDE。

于 2014-01-29T15:39:21.890 回答