无法访问子包中的对象

21 浏览
0 Comments

无法访问子包中的对象

我找到了一个在Scala中实现enum的例子,这是我找到的代码:

   package org.myproject
   object MyEnum extends Enumeration {
      type MyEnum = Value
      val val1, val2, val3 = Value
    }

但是,我遇到了一个错误type MyEnum is not a member of package org.myproject

package org.myproject.subnamespace
import org.myproject.MyEnum
abstract class MyClass {
  def myEnum123: MyEnum
}

请注意它们位于稍微不同的包中。

更新:实际上有2个错误,这取决于我如何定义def

package org.myproject.subnamespace
import org.myproject.MyEnum
abstract class MyClass {
  def myEnum123: MyEnum // not found: type MyEnum
  def myEnum123: org.myproject.MyEnum // type MyEnum is not a member of package org.myproject
}

有什么问题吗?

0
0 Comments

在一个子包中无法访问对象的问题可能是由于对象声明并没有引起类型声明引起的。你可能想要声明

def myEnum123: MyEnum.MyEnum

请参阅http://daily-scala.blogspot.ch/2009/08/enumerations.html以获取一个小教程。

解决方法:在对象声明之前添加类型声明。def myEnum123: MyEnum.MyEnum

0
0 Comments

无法访问子包中的对象的问题出现的原因是需要在导入语句中进行一些微小的修改。具体的修改如下所示:

package org.myproject.subnamespace
import org.myproject.MyEnum._
abstract class MyClass {
  def myEnum123: MyEnum
}

为了更好地理解为什么需要像这样导入枚举,请参考下面的链接:

Understanding scala enumerations

在这个问题中,出现了无法访问子包中的对象的情况。为了解决这个问题,我们需要对导入语句进行修改。具体的修改如下所示:

package org.myproject.subnamespace
import org.myproject.MyEnum._
abstract class MyClass {
  def myEnum123: MyEnum
}

为了更好地理解为什么需要像这样导入枚举,请参考下面的链接:

Understanding scala enumerations

0