我正在尝试访问嵌套在Scala中的Scala object
class
class ObjectState {
object Mirror {
def inMirrorObjectState(state: ObjectState): Unit = {
...
}
}
我这样做
import com.lapots.game.journey.osm.domain.ObjectState;
public class StaticInterop {
public static void readObjectState(ObjectState objState) {
ObjectState.Mirror$.MODULE$.inMirrorObjectState(objState);
}
}
但是在编译过程中失败了
error: cannot find symbol
ObjectState.Mirror$.MODULE$.inMirrorObjectState(objState);
^
symbol: variable MODULE$
location: class ObjectState.Mirror$
为什么?
答案 0 :(得分:4)
不起作用的原因是因为类中的对象实际上不是单例。 ObjectState的每个实例都有自己的对象。
要访问该单例,您必须执行此操作:
ObjectState a = new ObjectState();
//use the above instance to access the singleton inside it
a.Mirror().inMirrorObjectState(state);
如果你想要一个真正的单例内部类,你也可以将外部类更改为一个对象:
object ObjectState {
object Mirror {
def inMirrorObjectState(state: ObjectState): Unit = {
...
}
}
然后它会像这样工作:
ObjectState.Mirror$.MODULE$.inMirrorObjectState(state);