我有一个像这样定义的类(伪代码):
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...
}
但我收到错误:
类型SomeInnerClass不是object的成员 com.some.namespace.SomeClass
我无法访问模板中的内部类,还是应该可以使用? (如果它应该工作我可能需要发布我的实际代码)
答案 0 :(得分:3)
它应该可以工作,但因为SomeInnerClass
是一个依赖类型,即依赖于你的单例外部类实例,你需要写它:
@doSomething(value: com.some.namespace.SomeClass#SomeInnerClass) = {
// even more stuff...
}
Scala中的SomeClass#SomeInnerClass
语法含糊地表示来自 SomeInnerClass
的任何实例的SomeClass
。有关详细信息,请参阅this answer。
但是,如果内部类是静态,那么您当前的SomeClass.SomeInnerClass
语法就是最佳选择。