java与使用setter函数实现的注入绑定
我试图将Scala用作现有Java应用程序的一部分,现在遇到了一个问题,即使用setter方法注入依赖项(这部分代码中没有DI框架)。这是如何以Scala的方式处理的
在Scala中val
和var
在声明时都需要初始化,但我不能这样做,因为Java setter注入实现特定接口的对象,接口是抽象的,不能实例化
class ScalaLogic {
var service // How to initialize?
def setService (srv: OutputService) = {
service = srv
}
有没有一种方法可以初始化var service
,以便我以后可以将依赖项分配给它?它应该在词汇范围内,以便在整个班级中可见
# 1 楼答案
尝试使用类^{} 。这在道德上等同于在Java中使用
null
。这样声明服务:使用
还是模式匹配
# 2 楼答案
可以使用下划线将其初始化为默认值(null)
下划线的优点(而不仅仅是使用null)是它同时适用于原语和对象,因此参数化类的工作方式如下: