2016-07-28 290 views
4

我知道在Scala中处理依赖注入的最好方法是使用专门为该语言构建的工具,但我正在研究一个必须集成一些Scala和Java代码的项目。Scala和@Inject注释

然后,我使用Google Guice,它实现了规范JSR-330。幸运的是,我发现在Guice和Scala整合期间没有问题。我使用构造函数注入,因为我必须处理不变性。

我的问题是,为什么在斯卡拉我们必须在构造函数参数前使用@Inject()?为什么() paranthesis?它遵循一个例子:

class MyClass @Inject() (val another: AnotherClass) { 
    // Body of the class 
} 

回答

3

否则,你怎么能告诉我们,如果(val another: AnotherClass)是构造函数的参数列表或参数@Inject

+0

太简单了。非常感谢 –

3

这是关于注释构造函数的语法。斯卡拉需要构造标注有一个(且只有一个)参数列表(即使是空的)

class Bar @Fooable() (val i : Int) { 

} 

些什么呢i参数属于以下:批注或Bar类?

class Bar @Fooable(val i : Int) { 

}