puu*_*eli 1 java dependency-injection scala
我正在尝试将Scala用作现有Java应用程序的一部分,现在我遇到了一个使用setter方法注入的依赖项的问题(在这部分代码中没有DI框架).如何以Scala方式处理?
在Scala中val,var需要在声明时进行初始化,但我不能这样做,因为Java setter会注入实现某个接口的对象,并且接口是抽象的,无法实例化.
class ScalaLogic {
var service // How to initialize?
def setService (srv: OutputService) = {
service = srv
}
Run Code Online (Sandbox Code Playgroud)
有没有办法初始化,var service以便我以后可以为其分配依赖?它应该是词法范围,以便在整个班级中可见.
您可以使用下划线初始化为默认值(null).
class ScalaLogic {
var service: OutputService = _
def setService (srv: OutputService) = {
service = srv
}
}
Run Code Online (Sandbox Code Playgroud)
关于下划线(与使用null相反)的好处是它适用于基元和对象,因此参数化类的工作方式如下:
class ScalaLogic[T] {
var service: T = _
def setService (srv: T) = {
service = srv
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |