无法访问子包中的对象
无法访问子包中的对象
我找到了一个在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 }
有什么问题吗?
在一个子包中无法访问对象的问题可能是由于对象声明并没有引起类型声明引起的。你可能想要声明
def myEnum123: MyEnum.MyEnum
请参阅http://daily-scala.blogspot.ch/2009/08/enumerations.html以获取一个小教程。
解决方法:在对象声明之前添加类型声明。def myEnum123: MyEnum.MyEnum
无法访问子包中的对象的问题出现的原因是需要在导入语句中进行一些微小的修改。具体的修改如下所示:
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 }
为了更好地理解为什么需要像这样导入枚举,请参考下面的链接: