Play 框架 (2.3.5) - 访问内部 class 的模板失败

Play framework (2.3.5) - Template accessing an inner class fails

我有一个这样定义的class(伪代码):

package com.some.namespace

public class SomeClass {

    protected SomeClass() {}

    // stuff...

    public class SomeInnerClass {

        public SomeInnerClass() {}

        // more stuff (accesses instance variables from SomeClass)...

    }

}

然后在我的模板中,我使用可重用块定义如下:

@doSomething(val: com.some.namespace.SomeClass.SomeInnerClass) = {

    // even more stuff...

}

但是我得到错误:

type SomeInnerClass is not a member of object com.some.namespace.SomeClass

我无法访问模板中的内部 classes 还是这应该有效? (如果它应该工作,我可能需要 post 我的实际代码)

它应该可以工作,但是因为 SomeInnerClassdependent 类型,即依赖于你的单例外部 class 实例,你需要这样写:

@doSomething(value: com.some.namespace.SomeClass#SomeInnerClass) = {
    // even more stuff...
}

Scala 中的 SomeClass#SomeInnerClass 语法含糊地表示来自 SomeClass 的任何实例的 SomeInnerClass。有关详细信息,请参阅 this answer

如果内部 class 是 static,但是,您当前的 SomeClass.SomeInnerClass 语法将是可行的方法。