我创建了一个文件夹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
}
循环参考在哪里?我该如何删除它?据我所知,我无法在包对象中定义它的特征和案例子类。但我不清楚这种限制来自何处。
答案 0 :(得分:2)
正如PedroFuria所说这是一个错误,但在这些情况下看the issue associated with the bug总是好的。具体来说,结论是在2011年9月:
在包对象中定义类只是Scala编译器本身的一半。您可以通过在正确的目录中定义类来解决此问题。我怀疑这种情况很快就会完全得到支持。
所以最好参考这个related issue指出易于替换的内容:
package object mypkg {
class MyClass
}
以下内容:
package mypkg {
class MyClass
}
哪个适用于Eclipse / EclipseIDE。